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

📄 shudu.cpp

📁 shudu.cpp shudu.cppshudu.cppshudu.cpp
💻 CPP
📖 第 1 页 / 共 2 页
字号:
T38:for(a[2][7]=b[2][7];a[2][7]<=c[2][7];a[2][7]++){if(choose(a,2,7)==0) continue;if(a[2][7]==9&&choose(a,2,7)==0){b[2][6]+=1;goto T37;}
T39:for(a[2][8]=b[2][8];a[2][8]<=c[2][8];a[2][8]++){if(choose(a,2,8)==0) continue;if(a[2][8]==9&&choose(a,2,8)==0){b[2][7]+=1;goto T38;}

T41:for(a[3][0]=b[3][0];a[3][0]<=c[3][0];a[3][0]++){if(choose(a,3,0)==0) continue;if(a[3][0]==9&&choose(a,3,0)==0){b[2][8]+=1;goto T39;}
T42:for(a[3][1]=b[3][1];a[3][1]<=c[3][1];a[3][1]++){if(choose(a,3,1)==0) continue;if(a[3][1]==9&&choose(a,3,1)==0){b[3][0]+=1;goto T41;}
T43:for(a[3][2]=b[3][2];a[3][2]<=c[3][2];a[3][2]++){if(choose(a,3,2)==0) continue;if(a[3][2]==9&&choose(a,3,2)==0){b[3][1]+=1;goto T42;}
T44:for(a[3][3]=b[3][3];a[3][3]<=c[3][3];a[3][3]++){if(choose(a,3,3)==0) continue;if(a[3][3]==9&&choose(a,3,3)==0){b[3][2]+=1;goto T43;}
T45:for(a[3][4]=b[3][4];a[3][4]<=c[3][4];a[3][4]++){if(choose(a,3,4)==0) continue;if(a[3][4]==9&&choose(a,3,4)==0){b[3][3]+=1;goto T44;}
T46:for(a[3][5]=b[3][5];a[3][5]<=c[3][5];a[3][5]++){if(choose(a,3,5)==0) continue;if(a[3][5]==9&&choose(a,3,5)==0){b[3][4]+=1;goto T45;}
T47:for(a[3][6]=b[3][6];a[3][6]<=c[3][6];a[3][6]++){if(choose(a,3,6)==0) continue;if(a[3][6]==9&&choose(a,3,6)==0){b[3][5]+=1;goto T46;}
T48:for(a[3][7]=b[3][7];a[3][7]<=c[3][7];a[3][7]++){if(choose(a,3,7)==0) continue;if(a[3][7]==9&&choose(a,3,7)==0){b[3][6]+=1;goto T47;}
T49:for(a[3][8]=b[3][8];a[3][8]<=c[3][8];a[3][8]++){if(choose(a,3,8)==0) continue;if(a[3][8]==9&&choose(a,3,8)==0){b[3][7]+=1;goto T48;}

T51:for(a[4][0]=b[4][0];a[4][0]<=c[4][0];a[4][0]++){if(choose(a,4,0)==0) continue;if(a[4][0]==9&&choose(a,4,0)==0){b[3][8]+=1;goto T49;}
T52:for(a[4][1]=b[4][1];a[4][1]<=c[4][1];a[4][1]++){if(choose(a,4,1)==0) continue;if(a[4][1]==9&&choose(a,4,1)==0){b[4][0]+=1;goto T51;}
T53:for(a[4][2]=b[4][2];a[4][2]<=c[4][2];a[4][2]++){if(choose(a,4,2)==0) continue;if(a[4][2]==9&&choose(a,4,2)==0){b[4][1]+=1;goto T52;}
T54:for(a[4][3]=b[4][3];a[4][3]<=c[4][3];a[4][3]++){if(choose(a,4,3)==0) continue;if(a[4][3]==9&&choose(a,4,3)==0){b[4][2]+=1;goto T53;}
T55:for(a[4][4]=b[4][4];a[4][4]<=c[4][4];a[4][4]++){if(choose(a,4,4)==0) continue;if(a[4][4]==9&&choose(a,4,4)==0){b[4][3]+=1;goto T54;}
T56:for(a[4][5]=b[4][5];a[4][5]<=c[4][5];a[4][5]++){if(choose(a,4,5)==0) continue;if(a[4][5]==9&&choose(a,4,5)==0){b[4][4]+=1;goto T55;}
T57:for(a[4][6]=b[4][6];a[4][6]<=c[4][6];a[4][6]++){if(choose(a,4,6)==0) continue;if(a[4][6]==9&&choose(a,4,6)==0){b[4][5]+=1;goto T56;}
T58:for(a[4][7]=b[4][7];a[4][7]<=c[4][7];a[4][7]++){if(choose(a,4,7)==0) continue;if(a[4][7]==9&&choose(a,4,7)==0){b[4][6]+=1;goto T57;}
T59:for(a[4][8]=b[4][8];a[4][8]<=c[4][8];a[4][8]++){if(choose(a,4,8)==0) continue;if(a[4][8]==9&&choose(a,4,8)==0){b[4][7]+=1;goto T58;}

T61:for(a[5][0]=b[5][0];a[5][0]<=c[5][0];a[5][0]++){if(choose(a,5,0)==0) continue;if(a[5][0]==9&&choose(a,5,0)==0){b[4][8]+=1;goto T59;}
T62:for(a[5][1]=b[5][1];a[5][1]<=c[5][1];a[5][1]++){if(choose(a,5,1)==0) continue;if(a[5][1]==9&&choose(a,5,1)==0){b[5][0]+=1;goto T61;}
T63:for(a[5][2]=b[5][2];a[5][2]<=c[5][2];a[5][2]++){if(choose(a,5,2)==0) continue;if(a[5][2]==9&&choose(a,5,2)==0){b[5][1]+=1;goto T62;}
T64:for(a[5][3]=b[5][3];a[5][3]<=c[5][3];a[5][3]++){if(choose(a,5,3)==0) continue;if(a[5][3]==9&&choose(a,5,3)==0){b[5][2]+=1;goto T63;}
T65:for(a[5][4]=b[5][4];a[5][4]<=c[5][4];a[5][4]++){if(choose(a,5,4)==0) continue;if(a[5][4]==9&&choose(a,5,4)==0){b[5][3]+=1;goto T64;}
T66:for(a[5][5]=b[5][5];a[5][5]<=c[5][5];a[5][5]++){if(choose(a,5,5)==0) continue;if(a[5][5]==9&&choose(a,5,5)==0){b[5][4]+=1;goto T65;}
T67:for(a[5][6]=b[5][6];a[5][6]<=c[5][6];a[5][6]++){if(choose(a,5,6)==0) continue;if(a[5][6]==9&&choose(a,5,6)==0){b[5][5]+=1;goto T66;}
T68:for(a[5][7]=b[5][7];a[5][7]<=c[5][7];a[5][7]++){if(choose(a,5,7)==0) continue;if(a[5][7]==9&&choose(a,5,7)==0){b[5][6]+=1;goto T67;}
T69:for(a[5][8]=b[5][8];a[5][8]<=c[5][8];a[5][8]++){if(choose(a,5,8)==0) continue;if(a[5][8]==9&&choose(a,5,8)==0){b[5][7]+=1;goto T68;}

T71:for(a[6][0]=b[6][0];a[6][0]<=c[6][0];a[6][0]++){if(choose(a,6,0)==0) continue;if(a[6][0]==9&&choose(a,6,0)==0){b[5][8]+=1;goto T69;}
T72:for(a[6][1]=b[6][1];a[6][1]<=c[6][1];a[6][1]++){if(choose(a,6,1)==0) continue;if(a[6][1]==9&&choose(a,6,1)==0){b[6][0]+=1;goto T71;}
T73:for(a[6][2]=b[6][2];a[6][2]<=c[6][2];a[6][2]++){if(choose(a,6,2)==0) continue;if(a[6][2]==9&&choose(a,6,2)==0){b[6][1]+=1;goto T72;}
T74:for(a[6][3]=b[6][3];a[6][3]<=c[6][3];a[6][3]++){if(choose(a,6,3)==0) continue;if(a[6][3]==9&&choose(a,6,3)==0){b[6][2]+=1;goto T73;}
T75:for(a[6][4]=b[6][4];a[6][4]<=c[6][4];a[6][4]++){if(choose(a,6,4)==0) continue;if(a[6][4]==9&&choose(a,6,4)==0){b[6][3]+=1;goto T74;}
T76:for(a[6][5]=b[6][5];a[6][5]<=c[6][5];a[6][5]++){if(choose(a,6,5)==0) continue;if(a[6][5]==9&&choose(a,6,5)==0){b[6][4]+=1;goto T75;}
T77:for(a[6][6]=b[6][6];a[6][6]<=c[6][6];a[6][6]++){if(choose(a,6,6)==0) continue;if(a[6][6]==9&&choose(a,6,6)==0){b[6][5]+=1;goto T76;}
T78:for(a[6][7]=b[6][7];a[6][7]<=c[6][7];a[6][7]++){if(choose(a,6,7)==0) continue;if(a[6][7]==9&&choose(a,6,7)==0){b[6][6]+=1;goto T77;}
T79:for(a[6][8]=b[6][8];a[6][8]<=c[6][8];a[6][8]++){if(choose(a,6,8)==0) continue;if(a[6][8]==9&&choose(a,6,8)==0){b[6][7]+=1;goto T78;}

T81:for(a[7][0]=b[7][0];a[7][0]<=c[7][0];a[7][0]++){if(choose(a,7,0)==0) continue;if(a[7][0]==9&&choose(a,7,0)==0){b[6][8]+=1;goto T79;}
T82:for(a[7][1]=b[7][1];a[7][1]<=c[7][1];a[7][1]++){if(choose(a,7,1)==0) continue;if(a[7][1]==9&&choose(a,7,1)==0){b[7][0]+=1;goto T81;}
T83:for(a[7][2]=b[7][2];a[7][2]<=c[7][2];a[7][2]++){if(choose(a,7,2)==0) continue;if(a[7][2]==9&&choose(a,7,2)==0){b[7][1]+=1;goto T82;}
T84:for(a[7][3]=b[7][3];a[7][3]<=c[7][3];a[7][3]++){if(choose(a,7,3)==0) continue;if(a[7][3]==9&&choose(a,7,3)==0){b[7][2]+=1;goto T83;}
T85:for(a[7][4]=b[7][4];a[7][4]<=c[7][4];a[7][4]++){if(choose(a,7,4)==0) continue;if(a[7][4]==9&&choose(a,7,4)==0){b[7][3]+=1;goto T84;}
T86:for(a[7][5]=b[7][5];a[7][5]<=c[7][5];a[7][5]++){if(choose(a,7,5)==0) continue;if(a[7][5]==9&&choose(a,7,5)==0){b[7][4]+=1;goto T85;}
T87:for(a[7][6]=b[7][6];a[7][6]<=c[7][6];a[7][6]++){if(choose(a,7,6)==0) continue;if(a[7][6]==9&&choose(a,7,6)==0){b[7][5]+=1;goto T86;}
T88:for(a[7][7]=b[7][7];a[7][7]<=c[7][7];a[7][7]++){if(choose(a,7,7)==0) continue;if(a[7][7]==9&&choose(a,7,7)==0){b[7][6]+=1;goto T87;}
T89:for(a[7][8]=b[7][8];a[7][8]<=c[7][8];a[7][8]++){if(choose(a,7,8)==0) continue;if(a[7][8]==9&&choose(a,7,8)==0){b[7][7]+=1;goto T88;}

    /*for(k1=0;k1<9;k1++)
	{
		 
		{
			a[8][k1]=45;
			for(k2=0;k2<8;k2++)
				a[8][k1]-=a[k2][k1];
		}
		if( (c[8][k1]==b[8][k1])&&a[8][k1]!=b[8][k1])
		{
			a[7][8]+=1;
			goto T89;
		}
	}*/
T91:for(a[8][0]=b[8][0];a[8][0]<=c[8][0];a[8][0]++){if(choose(a,8,0)==0) continue;if(a[8][0]==9&&choose(a,8,0)==0){b[8][0]+=1;goto T89;}
T92:for(a[8][1]=b[8][1];a[8][1]<=c[8][1];a[8][1]++){if(choose(a,8,1)==0) continue;if(a[8][1]==9&&choose(a,8,1)==0){b[8][1]+=1;goto T91;}
T93:for(a[8][2]=b[8][2];a[8][2]<=c[8][2];a[8][2]++){if(choose(a,8,2)==0) continue;if(a[8][2]==9&&choose(a,8,2)==0){b[8][2]+=1;goto T92;}
T94:for(a[8][3]=b[8][3];a[8][3]<=c[8][3];a[8][3]++){if(choose(a,8,3)==0) continue;if(a[8][3]==9&&choose(a,8,3)==0){b[8][3]+=1;goto T93;}
T95:for(a[8][4]=b[8][4];a[8][4]<=c[8][4];a[8][4]++){if(choose(a,8,4)==0) continue;if(a[8][4]==9&&choose(a,8,4)==0){b[8][4]+=1;goto T94;}
T96:for(a[8][5]=b[8][5];a[8][5]<=c[8][5];a[8][5]++){if(choose(a,8,5)==0) continue;if(a[8][5]==9&&choose(a,8,5)==0){b[8][5]+=1;goto T95;}
T97:for(a[8][6]=b[8][6];a[8][6]<=c[8][6];a[8][6]++){if(choose(a,8,6)==0) continue;if(a[8][6]==9&&choose(a,8,6)==0){b[8][6]+=1;goto T96;}
T98:for(a[8][7]=b[8][7];a[8][7]<=c[8][7];a[8][7]++){if(choose(a,8,7)==0) continue;if(a[8][7]==9&&choose(a,8,7)==0){b[8][7]+=1;goto T97;}
    for(a[8][8]=b[8][8];a[8][8]<=c[8][8];a[8][8]++){if(choose(a,8,8)==0) continue;if(a[8][8]==9&&choose(a,8,8)==0){b[8][8]+=1;goto T98;}
	
   if( check(a) ) 
	{
		cc+=1;
		/*if(cc==1)
		{
			f2.close();
			printf("请输入你要保存数据的文件名:\n");
			scanf("%s",&filename);
			printf("%s",filename);
			f2.open(filename);
		}*/
		printf("第 %d 种解法\n",cc);
		prn(a);
		_strtime( tmpbuf );
		f2<<"第"<<cc<<"种解法  "<<tmpbuf<<endl;		
		for(i=0;i<9;i++)
		{
			for(j=0;j<9;j++)
			{
				f2<<a[i][j]<<"  ";	
				if((j+1)%3==0) f2<<"  ";
			}
			f2<<"\n";
			if((i+1)%3==0) f2<<"\n";			
		}
		if(cc>=m)
		{
			//prn(a);
			printf("输入0停止,输入c继续……\n");
			scanf("%s",&str);
			if(str[0]=='0') goto ST;
		}
	}

	}}}}}}}}}  }}}}}}}}}   }}}}}}}}}   }}}}}}}}}   }}}}}}}}}   }}}}}}}}}  }}}}}}}}}
	}}}}}}}}}  }}}}}}}}}
	if(cc==1) printf("恭喜,这是唯一解!!!\n");
	if(cc>1) printf("只有%d种解!!!\n",cc);
	if(cc==0) printf("很遗憾,这个数独无解!请检测输入!!!\n");
	}//while()

}

int check(int a[9][9])
{
    int test(int a[]);
	int i,j,k;
	int b[9];
	int d1,d2;
	//check row
	for(i=0;i<9;i++)
		if( test(a[i])==0 ) return 0;
	//check colum
    for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			b[j]=a[j][i];
		}
		if(test(b)==0) return 0;
		
	}
    //check nine homes
    for(d1=0;d1<7;d1=d1+3)
		for(d2=0;d2<7;d2=d2+3)
		{
			k=0;
			for(i=d1;i<d1+3;i++)
				for(j=d2;j<d2+3;j++)
					b[k++]=a[i][j];
			if(test(b)==0) return 0; 
		}
    
    //all check pass!
	return 1;
}
int test(int a[9])
{
	int b[9];
	int i;
	int sum;
	
    for(i=0;i<9;i++)
		b[i]=0;

	for(i=0;i<9;i++)
		if (a[i]) b[a[i]-1]=1;

	sum=0;
	for(i=0;i<9;i++)
		sum+=b[i];
	if(sum==9) return 1;
	return 0;

}
void prn(int a[9][9]){
	int i,j;
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
		{
			printf("%3d",a[i][j]);
			if((j+1)%3==0) printf("  ");
		}
		if((i+1)%3==0) printf("\n");
		printf("\n");
	}
}
int choose(int a[9][9],int t1,int t2)
{
	int i,j;
	int k1,k2;
	for(i=0;i<t2;i++)
		if (a[t1][t2]==a[t1][i]) return 0;
	for(i=0;i<t1;i++)
		if (a[i][t2]==a[t1][t2]) return 0;
    k1=t1/3;k1=k1*3;
	k2=t2/3;k2=k2*3;
	for(i=k1;i<t1;i++)
		for(j=k2;j<k2+3;j++)
			if(a[i][j]==a[t1][t2]) return 0;
	return 1;
}

⌨️ 快捷键说明

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