答案
0 1 1 0 1 1 1
1 1 0 1 1 1 0
0 1 1 0 1 1 1
1 1 0 1 1 1 0
1 1 1 0 1 1 0
0 1 1 1 0 1 1
1 1 1 0 1 1 0
0 1 1 1 0 1 1
1 1 1 0 1 1 0
1 1 1 0 1 1 0
1 0 1 1 0 1 1
1 1 1 0 1 1 0
1 0 1 1 0 1 1
1 1 1 0 1 1 0
1 1 1 0 1 1 0
1 0 1 1 1 0 1
1 1 1 0 1 1 0
1 0 1 1 1 0 1
1 1 1 0 1 1 0
1 1 1 0 1 1 0
代码
#include<iostream>
using namespace std;
int cnt=0;
int b[100005];
int cs=0;
void dfs(int a[7][7],int b[5][7],int cur)
{
// for(int i=0;i<7;i++)
// {
// for(int j=0;j<7;j++)
// {
// cout<<a[i][j]<<" ";
// }
// cout<<endl;
// }
// cout<<endl;
if(cur==5)
{
int cs=0;
for(int j=0;j<7;j++)
{
int cc=0;
for(int i=0;i<5;i++)
{
if(b[i][j]==1) cc++;
}
if(cc==5) cs++;
}
int okq=1;
if(cs<3) okq=0;
int ok=1;
for(int j=0;j<7;j++)
{
if(b[0][j]+b[1][j]+b[2][j]+b[3][j]<2) ok=0;
}
int oka=0;
if(b[1][6]==0&&b[3][6]==0&&b[4][6]==0) oka=1;
int okb=1;
if(b[0][2]+b[4][2]!=2) okb=0;
int p=0;
int okc=1;
for(int j=0;j<7;j++)
{
if(b[0][j]==1&&b[2][j]==1) p++;
}
if(p<4) okc=0;
if(okq&&ok&&oka&&okb&&okc)
{
for(int i=0;i<5;i++)
{
for(int j=0;j<7;j++)
cout<<b[i][j]<<" ";
cout<<endl;
}
cout<<endl;
}
// for(int i=0;i<5;i++)
// {
// for(int j=0;j<7;j++)
// cout<<b[i][j]<<" ";
// cout<<endl;
// }
// cout<<endl;
return ;
}
for(int i=0;i<7;i++)
{
for(int j=0;j<7;j++)
{
b[cur][j]=a[i][j];
}
dfs(a,b,cur+1);
}
// for(int i=0;i<7;i++)
// {
// for(int j=0;j<7;j++)
// {
// cout<<b[i][j]<<" ";
// }
// cout<<endl;
// }
}
void f(int cur,int *a,int *b)
{
if(cur==7)
{
int ok=1;
for(int i=0;i<7;i++)
{
if(a[i]==1) cs++;
}
//cout<<cs<<endl;
for(int i=0;i<7;i++)
{
if(a[i%7]+a[(i+1)%7]+a[(i+2)%7]+a[(i+3)%7]==4) ok=0;
}
if(cs==5&&ok)
{
for(int i=0;i<7;i++)
{
b[cnt]=a[i];
cnt++;
}
}
cs=0;
return ;
}
for(int i=0;i<2;i++)
{
a[cur]=i;
f(cur+1,a,b);
}
}
int main()
{
int a[7];
memset(a,0,sizeof(a));
f(0,a,b);
int x[7][7];
cnt=0;
for(int i=0;i<7;i++)
{
for(int j=0;j<7;j++)
{
x[i][j]=b[cnt++];
}
}
int b[5][7];
memset(b,0,sizeof(b));
dfs(x,b,0);
return 0;
}
日程表
最新推荐文章于 2023-11-14 13:53:29 发布