⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shudu.cpp

📁 shudu.cpp shudu.cppshudu.cppshudu.cpp
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<stdio.h>
#include<stdlib.h>
#include <time.h> 
#include <fstream.h>//文件操作(文件流)

    	
void main()
{
	ifstream f1;//从文件中读信息(input from file)
	ofstream f2;
    f2.open("123.txt");
	int cc=0;
	char tmpbuf[30]; 
	char filename[40];
	int temp;
	int a[9][9]={ {1,2,3,5,6,4,9,7,8},
                  {4,5,6,8,9,7,3,1,2},
                  {7,8,9,2,3,1,6,4,5},
				  {5,6,4,1,2,3,8,9,7},
				  {8,9,7,4,5,6,2,3,1},
				  {2,3,1,7,8,9,5,6,4},
				  {9,7,8,6,4,5,1,2,3},
				  {3,1,2,9,7,8,4,5,6},
				  {6,4,5,3,1,2,7,8,9},
		         };
	int b[9][9];
	int c[9][9];
	int d[9][9]= /* { {1,2,3,0,0,0,0,0,0},
                  {4,5,6,0,0,0,0,0,0},
                  {7,8,9,0,0,0,0,0,0},
				  {0,0,0,1,2,3,0,0,0},
                  {0,0,0,4,5,6,0,0,0},
                  {0,0,0,7,8,9,0,0,0},
				  {0,0,0,0,0,0,1,2,3},
                  {0,0,0,0,0,0,4,5,6},
                  {0,0,0,0,0,0,7,8,9},
		         };*/{ //{9,8,7,5,6,4,1,2,3},
		          //{1,2,5,7,8,3,4,9,6},
				  //{6,4,3,1,2,9,7,5,8},
                  {1,0,0,0,0,8,0,0,9},
                  {0,0,0,0,0,0,0,2,7},
				  {4,7,0,0,0,6,0,0,0},
				  //{6,4,3,1,2,9,7,5,8},
				  {8,0,0,9,4,0,6,7,0},
				  {0,0,0,0,0,1,0,0,0},
				  {0,4,3,0,5,7,0,0,8},  
				  //{8,6,9,4,1,2,5,3,7},
				  {0,0,0,1,0,0,0,8,4},
				  {2,9,0,0,0,0,0,0,0},
				  {5,0,0,6,0,0,0,0,2},
				  //{0,0,0,0,0,0,0,0,0},
				  //{1,2,3,7,8,9,4,5,6},
		         };
	int i,j;
	int m;
	int t;
	char str[12];
	int check(int a[9][9]);
	int test(int a[9]);
	void prn(int a[9][9]);
	int choose(int a[9][9],int t1,int t2);
	void w(int a[9][9],int c);

	    for(i=0;i<9;i++)
		for(j=0;j<9;j++)
		{
			b[i][j]=1;//loop star number
			c[i][j]=9;//loop end number
		}
	printf("******************************\n");
	printf("欢迎使用简易数独生成及求解系统\n");
	printf("    --制作人:廖旺胜 2009年3月\n");
	printf("******************************\n");
ST:
	while(1)
	{
		printf("请输入你要进行的操作:\n");
		printf("**************************\n");
		printf("1.系统自动生成数独组合。\n2.按一定的要求生成数独组合。\n3.一个数独问题求解样例。\n4.按您的输入求解数独问题。\n");
		printf("0.退出系统。\n");
		printf("**************************\n");
		scanf("%d",&t);
		switch(t)
		{
		case 0: 
			{
				printf("\n****************************************************************\n");
				printf("感谢你的使用,如有问题或建议,请联系:liaowangsheng2008@126.com\n");
				printf("****************************************************************\n");
				_strtime( tmpbuf ); 
	            f2<<"\n退出系统运行时间:"<<tmpbuf<<endl;
				exit(0);
			};
		case 1: goto TT1;
		case 2: goto TT2;
		case 3: {printf("求解数独:\n");prn(d);printf("求解中……\n");goto TT3;}
		case 4: goto TT2;
		default :printf("输入错误,请重新选择你要的操作:\n");break;
		}
	

	/*prn(a);
	if(check(a)) printf("this is a shudu\n");
	else printf("this is not a shudu\n");*/
	//set the init numbers equeal zero
TT2:
	printf("请输入要求:(9*9矩阵,空处用0代替)\n");
	printf("请选择你的输入方式:\n");
	printf("1.从键盘输入.\n2.从文件输入.\n3.使用默认shudu.txt文件\n");
	scanf("%d",&temp);
	switch(temp)
	{
	case 1:
		{	
			printf("请输入:\n");
			for(i=0;i<9;i++)
				for(j=0;j<9;j++)
				scanf("%d",a[i][j]);;

		}
	case 2:
		{
			printf("请输入文件名:\n");
			scanf("%s",&filename);
			f1.open(filename);
			for(i=0;i<9;i++)
				for(j=0;j<9;j++)
					f1>>d[i][j];
			f1.close();
		}
		
	case 3:
		{
			f1.open("shudu.txt");
			for(i=0;i<9;i++)
				for(j=0;j<9;j++)
					f1>>d[i][j];
			f1.close();
		}
	}
	//printf("从文件 shudu.txt 中读取(如果你是第一次使用请建立文件并输入数据\n");
	//f1.open("shudu.txt");	
	printf("你输入的要求是:\n");
	prn(d);
    
	


TT3:for(i=0;i<9;i++)
		for(j=0;j<9;j++)
			a[i][j]=1;
    

	


  
    //set some rules
	for(i=0;i<9;i++)
		for(j=0;j<9;j++)
		{
			if(d[i][j]!=0)
			{
				b[i][j]=d[i][j];
                c[i][j]=d[i][j];
			}
		}
TT1:
	printf("请输入你希望的最大解法数量:\n");
	scanf("%d",&m);
	_strtime( tmpbuf ); 
	f2<<"系统开始运行时间:"<<tmpbuf<<endl;
     //printf("输入c开始求解……\n");
     //scanf("%s",&str);
     printf("求解中,请稍候……\n");
T11:for(a[0][0]=b[0][0];a[0][0]<=c[0][0];a[0][0]++){
T12:for(a[0][1]=b[0][1];a[0][1]<=c[0][1];a[0][1]++){if(choose(a,0,1)==0) continue;if(a[0][1]==9&&choose(a,0,1)==0){b[0][0]+=1;goto T11;}
T13:for(a[0][2]=b[0][2];a[0][2]<=c[0][2];a[0][2]++){if(choose(a,0,2)==0) continue;if(a[0][2]==9&&choose(a,0,2)==0){b[0][1]+=1;goto T12;}
T14:for(a[0][3]=b[0][3];a[0][3]<=c[0][3];a[0][3]++){if(choose(a,0,3)==0) continue;if(a[0][3]==9&&choose(a,0,3)==0){b[0][2]+=1;goto T13;}
T15:for(a[0][4]=b[0][4];a[0][4]<=c[0][4];a[0][4]++){if(choose(a,0,4)==0) continue;if(a[0][4]==9&&choose(a,0,4)==0){b[0][3]+=1;goto T14;}
T16:for(a[0][5]=b[0][5];a[0][5]<=c[0][5];a[0][5]++){if(choose(a,0,5)==0) continue;if(a[0][5]==9&&choose(a,0,5)==0){b[0][4]+=1;goto T15;}
T17:for(a[0][6]=b[0][6];a[0][6]<=c[0][6];a[0][6]++){if(choose(a,0,6)==0) continue;if(a[0][6]==9&&choose(a,0,6)==0){b[0][5]+=1;goto T16;}
T18:for(a[0][7]=b[0][7];a[0][7]<=c[0][7];a[0][7]++){if(choose(a,0,7)==0) continue;if(a[0][7]==9&&choose(a,0,7)==0){b[0][6]+=1;goto T17;}
T19:for(a[0][8]=b[0][8];a[0][8]<=c[0][8];a[0][8]++){if(choose(a,0,8)==0) continue;if(a[0][8]==9&&choose(a,0,8)==0){b[0][7]+=1;goto T18;}

T21:for(a[1][0]=b[1][0];a[1][0]<=c[1][0];a[1][0]++){if(choose(a,1,0)==0) continue;if(a[1][0]==9&&choose(a,1,0)==0){b[0][8]+=1;goto T19;}
T22:for(a[1][1]=b[1][1];a[1][1]<=c[1][1];a[1][1]++){if(choose(a,1,1)==0) continue;if(a[1][1]==9&&choose(a,1,1)==0){b[1][0]+=1;goto T21;}
T23:for(a[1][2]=b[1][2];a[1][2]<=c[1][2];a[1][2]++){if(choose(a,1,2)==0) continue;if(a[1][2]==9&&choose(a,1,2)==0){b[1][1]+=1;goto T22;}
T24:for(a[1][3]=b[1][3];a[1][3]<=c[1][3];a[1][3]++){if(choose(a,1,3)==0) continue;if(a[1][3]==9&&choose(a,1,3)==0){b[1][2]+=1;goto T23;}
T25:for(a[1][4]=b[1][4];a[1][4]<=c[1][4];a[1][4]++){if(choose(a,1,4)==0) continue;if(a[1][4]==9&&choose(a,1,4)==0){b[1][3]+=1;goto T24;}
T26:for(a[1][5]=b[1][5];a[1][5]<=c[1][5];a[1][5]++){if(choose(a,1,5)==0) continue;if(a[1][5]==9&&choose(a,1,5)==0){b[1][4]+=1;goto T25;}
T27:for(a[1][6]=b[1][6];a[1][6]<=c[1][6];a[1][6]++){if(choose(a,1,6)==0) continue;if(a[1][6]==9&&choose(a,1,6)==0){b[1][5]+=1;goto T26;}
T28:for(a[1][7]=b[1][7];a[1][7]<=c[1][7];a[1][7]++){if(choose(a,1,7)==0) continue;if(a[1][7]==9&&choose(a,1,7)==0){b[1][6]+=1;goto T27;}
T29:for(a[1][8]=b[1][8];a[1][8]<=c[1][8];a[1][8]++){if(choose(a,1,8)==0) continue;if(a[1][8]==9&&choose(a,1,8)==0){b[1][7]+=1;goto T28;}

T31:for(a[2][0]=b[2][0];a[2][0]<=c[2][0];a[2][0]++){if(choose(a,2,0)==0) continue;if(a[2][0]==9&&choose(a,2,0)==0){b[1][8]+=1;goto T29;}
T32:for(a[2][1]=b[2][1];a[2][1]<=c[2][1];a[2][1]++){if(choose(a,2,1)==0) continue;if(a[2][1]==9&&choose(a,2,1)==0){b[2][0]+=1;goto T31;}
T33:for(a[2][2]=b[2][2];a[2][2]<=c[2][2];a[2][2]++){if(choose(a,2,2)==0) continue;if(a[2][2]==9&&choose(a,2,2)==0){b[2][1]+=1;goto T32;}
T34:for(a[2][3]=b[2][3];a[2][3]<=c[2][3];a[2][3]++){if(choose(a,2,3)==0) continue;if(a[2][3]==9&&choose(a,2,3)==0){b[2][2]+=1;goto T33;}
T35:for(a[2][4]=b[2][4];a[2][4]<=c[2][4];a[2][4]++){if(choose(a,2,4)==0) continue;if(a[2][4]==9&&choose(a,2,4)==0){b[2][3]+=1;goto T34;}
T36:for(a[2][5]=b[2][5];a[2][5]<=c[2][5];a[2][5]++){if(choose(a,2,5)==0) continue;if(a[2][5]==9&&choose(a,2,5)==0){b[2][4]+=1;goto T35;}
T37:for(a[2][6]=b[2][6];a[2][6]<=c[2][6];a[2][6]++){if(choose(a,2,6)==0) continue;if(a[2][6]==9&&choose(a,2,6)==0){b[2][5]+=1;goto T36;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -