九宫格
“九宫阵”也称为“数独”。这是一个9×9的方阵,由9个3×3方阵组成(黑色实线包围)。玩家在每个小格子里面填上数字1至9,使得结果满足下面的条件。
条件1:使每个横行和每个竖列中的9个格子都包含数字1至9,数字不能重复;条件2:使每个3×3“九宫格”中的9个格子都包含数字1至9,数字不能重复。
迷 解
由于算法比较简单,只能求解简单的九宫阵,诸如要用假设法,或解不唯一等无能为力了
算法思想:
1,对每个数字设置一个标志二维数组(9个数字,即是一个三维数组),每个子二维数组中
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
此位置是否能填本数字,不能,为1,能为0,此依据是对每个数字所在的行,列,和所在的小九宫阵的所有位置的相应数字的子二维数组置1
2,判断标志数组中是都有行,列,小九宫阵中只有一个标志为0,
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示这个位置一定为该数字
3,更新标志数组,更新元素所在行,列,小九宫阵的所有位置置1,如此循环
大家帮我看看什么地方能优化(通过win-tc1.91编译成功)
/*九宫阵求解*/
#include
void print(int a[9][9]) /*格式化打印二维数组*/
{int i,j;
for(i=0;i<9;i++)
{for(j=0;j<9;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
void ini_logo(int logo[10][9][9],int arr[9][9])/*初始化标志数组*/ {int i,j,k,p,r,s,t;
for(i=0;i<9;++i)
for(j=0;j<9;++j)
if(arr[i][j]!=0)
for(k=1;k<=9;++k)logo[k][i][j]=1; for(i=0;i<9;++i)
for(j=0;j<9;++j)
if(arr[i][j]!=0)
{p=arr[i][j];
for(r=0;r<9;++r)
{logo[p][i][r]=1;logo[p][r][j]=1;} for(s=(i/3)*3;s<(i/3)*3+3;++s) for(t=(j/3)*3;t<(j/3)*3+3;++t)
logo[p][s][t]=1;
}
}
int add(int arr[9][9],int logo[10][9][9],int m,int n,int k)/*arr[m][n]插入数字,修改arr,logo数组*/
{int i,s,p,t;
arr[m][n]=k;
for(p=1;p<=9;++p)
logo[p][m][n]=1;
for(i=0;i<9;++i)
{logo[k][m][i]=1;
logo[k][i][n]=1;
}
for(s=(m/3)*3;s<(m/3)*3+3;++s) for(t=(n/3)*3;t<(n/3)*3+3;++t)
logo[k][s][t]=1;
}
int check(int logo[10][9][9],int arr[9][9]) /*检测行列和小九宫格*/ {int i,j,k,p,q,r,s,t,m,n,tag=0; /*tag标志本轮是否修改*/
for(k=1;k<=9;++k)
{for(i=0;i<9;++i)
{p=0;q=0;
for(j=0;j<9;++j)
{if(logo[k][i][j]==0){r=j;p++;} /*检测行*/
if(logo[k][j][i]==0){s=j;q++;} /*检测列*/
}
if(p==1){tag=1;add(arr,logo,i,r,k);}
if(q==1){tag=1;add(arr,logo,s,i,k);} /*满足一个添加的条件,修改arr,logo数组和标志tag*/
}
for(i=0;i<9;i=i+3) /*检测小九宫格*/
for(j=0;j<9;j=j+3)
{t=0;
for(m=i;m
本文档为【九宫格】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。