| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 529 人关注过本帖
标题:输出数独表的程序,请问哪里出错了
只看楼主 加入收藏
cracker134
Rank: 2
等 级:等待验证会员
帖 子:18
专家分:13
注 册:2010-6-15
收藏
 问题点数:0 回复次数:3 
输出数独表的程序,请问哪里出错了
程序代码:
/*14th,Jun,2010 by:cracker134 数独*/
#include<stdio.h>
int num[9][9],total=0;
void sortnum_0();
void sortnum_1();
void sortnum_2();
void sortnum_3();
void sortnum_4();
void sortnum_5();
void sortnum_6();
void sortnum_7();
void sortnum_8();
void printnum();
int test_1(int *pctr,int ctr_n);
int test_2(int a,int b);
int main()
{
    sortnum_0();
    printf("total=%i\n",total);
    return 0;
}
/****************************************************************/
void sortnum_0()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[0][0]=ctr[0];
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[1][0]=ctr[1];
    if(test_1(ctr,1)==0){continue;}
  
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[2][0]=ctr[2];
    if(test_1(ctr,2)==0){continue;}  
  
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[0][1]=ctr[3];
    if(test_1(ctr,3)==0){continue;}  
   

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[1][1]=ctr[4];
    if(test_1(ctr,4)==0){continue;}
   

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[2][1]=ctr[5];
    if(test_1(ctr,5)==0){continue;}
   

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[0][2]=ctr[6];
    if(test_1(ctr,6)==0){continue;}
   

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[1][2]=ctr[7];
    if(test_1(ctr,7)==0){continue;}
   

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[2][2]=ctr[8];
    if(test_1(ctr,8)==0){continue;}
   

    sortnum_1();
    }}}}}}}}}
}

/******************************************************************/
void sortnum_1()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[3][0]=ctr[0];
    if(test_2(3,0)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[4][0]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(4,0)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[5][0]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(5,0)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[3][1]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(3,1)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[4][1]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(4,1)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[5][1]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(5,1)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[3][2]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(3,2)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[4][2]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(4,2)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[5][2]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(5,2)==0)){continue;}

    sortnum_2();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_2()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[6][0]=ctr[0];
    if(test_2(6,0)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[7][0]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(7,0)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[8][0]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(8,0)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[6][1]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(6,1)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[7][1]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(7,1)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[8][1]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(8,1)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[6][2]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(6,2)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[7][2]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(7,2)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[8][2]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(8,2)==0)){continue;}

    sortnum_3();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_3()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[0][3]=ctr[0];
    if(test_2(0,3)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[1][3]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(1,3)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[2][3]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(2,3)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[0][4]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(0,4)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[1][4]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(1,4)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[2][4]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(2,4)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[0][5]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(0,5)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[1][5]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(1,5)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[2][5]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(2,5)==0)){continue;}

    sortnum_4();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_4()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[3][3]=ctr[0];
    if(test_2(3,3)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[4][3]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(4,3)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[5][3]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(5,3)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[3][4]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(3,4)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[4][4]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(4,4)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[5][4]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(5,4)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[3][5]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(3,5)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[4][5]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(4,5)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[5][5]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(5,5)==0)){continue;}

    sortnum_5();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_5()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[6][3]=ctr[0];
    if(test_2(6,3)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[7][3]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(7,3)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[8][3]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(8,3)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[6][4]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(6,4)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[7][4]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(7,4)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[8][4]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(8,4)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[6][5]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(6,5)==0)){continue;}
    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[7][5]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(7,5)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[8][5]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(8,5)==0)){continue;}

    sortnum_6();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_6()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[0][6]=ctr[0];
    if(test_2(0,6)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[1][6]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(1,6)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[2][6]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(2,6)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[0][7]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(0,7)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[1][7]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(1,7)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[2][7]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(2,7)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[0][8]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(0,8)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[1][8]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(1,8)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[2][8]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(2,8)==0)){continue;}

    sortnum_7();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_7()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[3][6]=ctr[0];
    if(test_2(3,6)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[4][6]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(4,6)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[5][6]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(5,6)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[3][7]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(3,7)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[4][7]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(5,7)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[5][7]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(5,7)==0)){continue;}
    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[3][8]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(3,8)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[4][8]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(4,8)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[5][8]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(5,8)==0)){continue;}

    sortnum_8();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_8()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[6][6]=ctr[0];
    if(test_2(6,6)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[7][6]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(7,6)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[8][6]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(8,6)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[6][7]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(6,7)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[7][7]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(7,7)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[8][7]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(8,7)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[6][8]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(6,8)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[7][8]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(7,8)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[8][8]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(8,8)==0)){continue;}

    printnum();
    total+=1;
    getchar();
    }}}}}}}}}
}
/**************************************************************************************/
void printnum()
{
    int x,y;
    for(y=0;y<9;y++)
    {
        for(x=0;x<9;x++)
        {
            printf("%i ",num[x][y]);
            if((x==2)||(x==5)){printf(" ");}
        }
        printf("\n");
        if((y==2)||(y==5)){printf("\n");}
    }
    printf("\n\n\n");
   

}
/*************************************************/
int test_1(int *pctr,int ctr_n)
{
    int i,res=1;
    for(i=0;i<ctr_n;i++)
    {
        if(*(pctr+ctr_n)==*(pctr+i)){res=0;}
    }
    return res;
}
/****************************************************/
int test_2(int a,int b)
{
    int x,y,res=1;

    if(a>2)
    {
        for(x=0;x<(a/3*3-1);x++)
        {
            if(num[x][b]==num[a][b]) {res=0;}
        }
    }
   

    if(b>2)
    {
        for(y=0;y<(b/3*3-1);y++)
        {
            if(num[a][y]==num[a][b]) {res=0;}
        }
    }
    return res;
}

搜索更多相关主题的帖子: 输出 
2010-06-16 17:21
cracker134
Rank: 2
等 级:等待验证会员
帖 子:18
专家分:13
注 册:2010-6-15
收藏
得分:0 
程序代码:
//修改好了,谢谢
#include<stdio.h>
int num[9][9],total=0;
void sortnum_0();
void sortnum_1();
void sortnum_2();
void sortnum_3();
void sortnum_4();
void sortnum_5();
void sortnum_6();
void sortnum_7();
void sortnum_8();
void printnum();
int test_1(int *pctr,int ctr_n);
int test_2(int a,int b);
int main()
{
    sortnum_0();
    printf("total=%i\n",total);
    return 0;
}
/****************************************************************/
void sortnum_0()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[0][0]=ctr[0];
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[1][0]=ctr[1];
    if(test_1(ctr,1)==0){continue;}
  
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[2][0]=ctr[2];
    if(test_1(ctr,2)==0){continue;}  
  
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[0][1]=ctr[3];
    if(test_1(ctr,3)==0){continue;}  
   

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[1][1]=ctr[4];
    if(test_1(ctr,4)==0){continue;}
   

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[2][1]=ctr[5];
    if(test_1(ctr,5)==0){continue;}
   

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[0][2]=ctr[6];
    if(test_1(ctr,6)==0){continue;}
   

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[1][2]=ctr[7];
    if(test_1(ctr,7)==0){continue;}
   

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[2][2]=ctr[8];
    if(test_1(ctr,8)==0){continue;}
   

    sortnum_1();
    }}}}}}}}}
}

/******************************************************************/
void sortnum_1()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[3][0]=ctr[0];
    if(test_2(3,0)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[4][0]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(4,0)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[5][0]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(5,0)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[3][1]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(3,1)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[4][1]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(4,1)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[5][1]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(5,1)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[3][2]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(3,2)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[4][2]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(4,2)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[5][2]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(5,2)==0)){continue;}

    sortnum_2();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_2()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[6][0]=ctr[0];
    if(test_2(6,0)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[7][0]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(7,0)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[8][0]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(8,0)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[6][1]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(6,1)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[7][1]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(7,1)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[8][1]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(8,1)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[6][2]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(6,2)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[7][2]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(7,2)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[8][2]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(8,2)==0)){continue;}

    sortnum_3();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_3()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[0][3]=ctr[0];
    if(test_2(0,3)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[1][3]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(1,3)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[2][3]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(2,3)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[0][4]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(0,4)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[1][4]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(1,4)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[2][4]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(2,4)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[0][5]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(0,5)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[1][5]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(1,5)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[2][5]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(2,5)==0)){continue;}

    sortnum_4();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_4()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[3][3]=ctr[0];
    if(test_2(3,3)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[4][3]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(4,3)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[5][3]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(5,3)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[3][4]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(3,4)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[4][4]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(4,4)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[5][4]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(5,4)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[3][5]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(3,5)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[4][5]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(4,5)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[5][5]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(5,5)==0)){continue;}

    sortnum_5();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_5()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[6][3]=ctr[0];
    if(test_2(6,3)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[7][3]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(7,3)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[8][3]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(8,3)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[6][4]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(6,4)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[7][4]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(7,4)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[8][4]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(8,4)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[6][5]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(6,5)==0)){continue;}
    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[7][5]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(7,5)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[8][5]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(8,5)==0)){continue;}

    sortnum_6();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_6()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[0][6]=ctr[0];
    if(test_2(0,6)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[1][6]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(1,6)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[2][6]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(2,6)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[0][7]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(0,7)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[1][7]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(1,7)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[2][7]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(2,7)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[0][8]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(0,8)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[1][8]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(1,8)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[2][8]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(2,8)==0)){continue;}

    sortnum_7();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_7()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[3][6]=ctr[0];
    if(test_2(3,6)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[4][6]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(4,6)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[5][6]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(5,6)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[3][7]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(3,7)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[4][7]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(4,7)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[5][7]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(5,7)==0)){continue;}
    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[3][8]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(3,8)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[4][8]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(4,8)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[5][8]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(5,8)==0)){continue;}

    sortnum_8();
    }}}}}}}}}
}
/********************************************************************/
void sortnum_8()
{
    int ctr[9];
    for(ctr[0]=1;ctr[0]<10;ctr[0]++)
    {num[6][6]=ctr[0];
    if(test_2(6,6)==0){continue;}
  
    for(ctr[1]=1;ctr[1]<10;ctr[1]++)
    {num[7][6]=ctr[1];
    if((test_1(ctr,1)==0)||(test_2(7,6)==0)){continue;}
  
    for(ctr[2]=1;ctr[2]<10;ctr[2]++)
    {num[8][6]=ctr[2];
    if((test_1(ctr,2)==0)||(test_2(8,6)==0)){continue;}
  
    for(ctr[3]=1;ctr[3]<10;ctr[3]++)
    {num[6][7]=ctr[3];
    if((test_1(ctr,3)==0)||(test_2(6,7)==0)){continue;}

    for(ctr[4]=1;ctr[4]<10;ctr[4]++)
    {num[7][7]=ctr[4];
    if((test_1(ctr,4)==0)||(test_2(7,7)==0)){continue;}

    for(ctr[5]=1;ctr[5]<10;ctr[5]++)
    {num[8][7]=ctr[5];
    if((test_1(ctr,5)==0)||(test_2(8,7)==0)){continue;}

    for(ctr[6]=1;ctr[6]<10;ctr[6]++)
    {num[6][8]=ctr[6];
    if((test_1(ctr,6)==0)||(test_2(6,8)==0)){continue;}

    for(ctr[7]=1;ctr[7]<10;ctr[7]++)
    {num[7][8]=ctr[7];
    if((test_1(ctr,7)==0)||(test_2(7,8)==0)){continue;}

    for(ctr[8]=1;ctr[8]<10;ctr[8]++)
    {num[8][8]=ctr[8];
    if((test_1(ctr,8)==0)||(test_2(8,8)==0)){continue;}

    printnum();
    total+=1;
    getchar();
    }}}}}}}}}
}
/**************************************************************************************/
void printnum()
{
    int x,y;
    for(y=0;y<9;y++)
    {
        for(x=0;x<9;x++)
        {
            printf("%i ",num[x][y]);
            if((x==2)||(x==5)){printf(" ");}
        }
        printf("\n");
        if((y==2)||(y==5)){printf("\n");}
    }
    printf("\n\n\n");
   

}
/*************************************************/
int test_1(int *pctr,int ctr_n)
{
    int i,res=1;
    for(i=0;i<ctr_n;i++)
    {
        if(*(pctr+ctr_n)==*(pctr+i)){res=0;}
    }
    return res;
}
/****************************************************/
int test_2(int a,int b)
{
    int x,y,res=1;   

    if(a>2)
    {
        for(x=0;x<(a/3*3);x++)
        {
            if(num[x][b]==num[a][b]) {res=0;}
        }
    }
   

    if(res==1)
    {
        if(b>2)
        {
            for(y=0;y<(b/3*3);y++)
            {
            if(num[a][y]==num[a][b]) {res=0;}
            }
        }
    }
    return res;
}
2010-06-16 17:56
rainbow1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:277
专家分:839
注 册:2010-5-19
收藏
得分:0 
楼主好辛苦,把数独的所有可能给整出来了。
2010-06-16 19:11
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
数独好像用dancing links快吧
2010-06-16 22:27
快速回复:输出数独表的程序,请问哪里出错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043258 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved