16宫格问题,和8皇后差不多。想了整整1个大白天了,不知道问题出在哪。
4行4列宫格,每行列,只能放2个子,
下面是我的代码,可是我的代码只能输出一个结果,而且再怎么改都还是同样的结果。求高手帮忙一下,我卡在这边了。
下面是我的代码,可是我的代码只能输出一个结果,而且再怎么改都还是同样的结果。求高手帮忙一下,我卡在这边了。
#include<iostream>
using namespace std;
void printf4(int a[][4]) //输出
{
int br=0;
for(int i1=0;i1<4;i1++)
for(int j1=0;j1<4;j1++)
{ cout<<a[i1][j1]<<" ";
br++;
if(br%4==0)
cout<<endl;
}
}
void putin(int a[][4],int m,int n,int*row,int*how) //输入点
{
a[m][n]=1;
row[m]++;
how[n]++;
}
bool couldputin(int a[][4],int m,int n,int *row,int *how) //判断是否可以输入。
{
if((m<4)&&(n<4)&&(row[m]!=2)&&(how[n]!=2)&&(a[m][n]!=1))
return true;
else
return false;
}
void set8(int a[][4],int * row,int* how,int ip) //输入8个点,每行2个,每列2个,
{
if(ip>4)
{ printf4(a);cout<<endl;}
else
{
for(int i=0;i<3;i++)
{
if (couldputin(a,ip,i,row,how))
{ putin(a,ip,i,row,how);
for(int j=i+1;j<4;j++)
{
if (couldputin(a,ip,j,row,how))
{
putin(a,ip,j,row,how);
set8(a,row,how,ip+1);
}
}
}
}
}
}
int main()
{
int a[4][4];
int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=0;
int row[4]={0,0,0,0}; //行, 每行输入的个数,最多为2.
int how[4]={0,0,0,0}; //列 每列输入的个数,最多为2.
int ip=0;
set8(a,row,how,0);
printf4(a);
return 0;
}
...全文
相关推荐
16宫格翻牌匹配HTML5游戏.zip
16宫格翻牌匹配HTML5游戏是一款16宫格的翻牌图标匹配游戏,翻开两个图标一样,进行匹配小游戏源码下载。
javascript HTML5 APP网页游戏_9宫格,16宫格抽奖大转盘(源代码)
javascript H5 APP网页游戏_九宫格,16宫格抽奖大转盘(源代码)
html和js相册(3D立体相册+16宫格相册+照片墙+自动播放相册)
html和js实现网页相册功能,使用方便有使用说明,将你的所有照片放在指定目录下 程序自动加载照片,在网页用各种方式(3D立体相册+16宫格相册+照片墙+自动播放相册)浏览相册
16宫格翻牌匹配HTML5小游戏代码
16宫格翻牌匹配HTML5小游戏代码
16宫格翻牌匹配HTML5游戏特效代码
16宫格翻牌匹配HTML5游戏是一款16宫格的翻牌图标匹配游戏,翻开两个图标一样,进行匹配小游戏源码下载。


