爱问知识人 爱问教育 医院库

帮忙用C语言做个题,100分了

首页

帮忙用C语言做个题,100分了

 求(2n+1)平方的魔方阵生成算法,魔方阵是指一个从1到2n+1的平方的数 排列在一个(2n+1)x(2n+1)的矩阵中,其中每行、每列以及对角线的和都相等。

数独问题的算法:即1到9九个数排在一个9x9的格内,要求每行、每列的数字都不相同,要求至少生成一个解,如果能够求出全部解及其个数更好。

提交回答
好评回答
  • 2019-03-15 16:00:25
      1。魔方阵源程序
    #define MAX 15
    #include 
    main()
    { int n;
    int m=1;
    int i,j;
    int a[MAX][MAX];
    clrscr();
    scanf("%d",&n);
    i=0,j=(n+1)/2-1;
    while(m1)
    i=i+2,j=j-1;
    if(i(n-1)) j=j-n;
    }
    for(i=0;i 
    #include  
    typedef struct _grid99 
    { 
    int value[9][9]; 
    char disp[9][9]; 
    } grid99; 
    char x_status[9][9]; 
    char y_status[9][9]; 
    char z_status[9][9]; 
    typedef struct _list9 
    { 
    int value[9]; 
    char disp[9]; 
    } list9; 
    list9 l; 
    void print(grid99 * g) 
    { 
    int i,j; 
    for(i=0; idisp[i][j]); 
    } 
    printf("\n"); 
    } 
    printf("\n"); 
    } 
    int check(grid99 * g) 
    { 
    int i,j,x,y, value; 
    for(i=0; ivalue[i][j]; 
    } 
    if (value!=511) 
    { 
    return -1; 
    } 
    value=0; 
    for(j=0; jvalue[j][i]; 
    } 
    if (value!=511) 
    { 
    return -1; 
    } 
    } 
    for(i=0;ivalue[i*3+x][j*3+y]; 
    } 
    } 
    if (value!=511) 
    { 
    return -1; 
    } 
    } 
    } 
    print(g); 
    return 0; 
    } 
    int f(int a_n) 
    { 
    int i, r=1; 
    for(i=1;i=81) 
    { 
    printf("level>=81"); 
    return; 
    } 
    x=level/9; 
    y=level%9; 
    z=(int)(x/3)*3+(int)(y/3); 
    for(i=0;ivalue[x][y]=l。
      value[i]; g->disp[x][y]=l。disp[i]; x_status[x][i]='N'; y_status[y][i]='N'; z_status[z][i]='N'; if(level==80) { check(g); } else { find(g, level+1); } id=g->disp[x][y]-0x30-1; x_status[x][id]='Y'; y_status[y][id]='Y'; z_status[z][id]='Y'; g->value[x][y]=0; g->disp[x][y]=0x30; } } } main() { int i,j,k; grid99 g; for(i=0; i<9; i++) { l。
      value[i]=f(i); l。disp[i]=i+0x30+1; //printf("%c ", l。disp[i]); //printf("%d ", l。value[i]); for(j=0; j<9; j++) { g。
      value[i][j]=0; g。disp[i][j]=0x30; //printf("%c ", g。disp[i][j]); //printf("%d ", g。
      value[i][j]); } for(k=0;k<9;k++) { x_status[i][k]='Y'; y_status[i][k]='Y'; z_status[i][k]='Y'; } } find(&g,0); } void main() { int i,j,tmp; int a[9][9]; int row=9,line=9; for(i=0;i

    y***

    2019-03-15 16:00:25

其他答案

    2019-03-15 15:42:53
  • 这个程序可以输出任意组合的魔方~ 
    #include 
    void main() 
    { 
    int a[32][32],i,j,k,p,n; 
    p=1; 
    while(p==1) 
    { 
    printf("Enter n(n=1~25)"); 
    scanf("%d",&n); 
    if((n!=0)&&(nn)) 
    { 
    i=i+2; 
    j=j-1; 
    } 
    else 
    { 
    if(in) 
    j=1; 
    } 
    if(a[i][j]==0) 
    a[i][j]=k; 
    else 
    { 
    i=i+2; 
    j=j-1; 
    a[i][j]=k; 
    } 
    } 
    for(i=1;i<=n;i++) 
    { 
    for(j=1;j<=n;j++) 
    printf("%d ",a[i][j]); 
    printf("\n"); 
    } 
    }

    F***

    2019-03-15 15:42:53

  • 2019-03-15 15:32:58
  •   第一种:
    #include 
    void main() 
    { 
    int a[32][32],i,j,k,p,n; 
    p=1; 
    while(p==1) 
    { 
    printf("Enter n(n=1~25)"); 
    scanf("%d",&n); 
    if((n!=0)&&(nn)) 
    { 
    i=i+2; 
    j=j-1; 
    } 
    else 
    { 
    if(in) 
    j=1; 
    } 
    if(a[i][j]==0) 
    a[i][j]=k; 
    else 
    { 
    i=i+2; 
    j=j-1; 
    a[i][j]=k; 
    } 
    } 
    for(i=1;i 
    #define N 3 
    int fun(int (*a)[N]) 
    { int i,j,m1,m2,row,colum; 
    m1=m2=0; 
    for(i=0; i  0及vc++6。0测试通过"!。

    一***

    2019-03-15 15:32:58

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 175-194
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):