📄 cube.cpp
字号:
#include "iostream.h"
#include "stdlib.h"
void setnum(int *cube,int length,int *aid,int length_of_aid)
{
int t;
for(int i=0;i<length_of_aid;i++)
{
t=aid[i];
cube[t]=1;
}
}
int check(int *cube)
{
int n,count=0;
for(n=0;n<=24;n=n+3)
{
if(cube[n]+cube[n+1]+cube[n+2]==0||cube[n]+cube[n+1]+cube[n+2]==3)
{count=count+1;}
}//9条水平
for(n=0;n<=2;n++)
{
if(cube[n]+cube[n+3]+cube[n+6]==0||cube[n]+cube[n+3]+cube[n+6]==3)
{count=count+1;}
}//3条水平
for(n=9;n<=11;n++)
{
if(cube[n]+cube[n+3]+cube[n+6]==0||cube[n]+cube[n+3]+cube[n+6]==3)
{count=count+1;}
}//3条水平
for(n=18;n<=20;n++)
{
if(cube[n]+cube[n+3]+cube[n+6]==0||cube[n]+cube[n+3]+cube[n+6]==3)
{count=count+1;}
}//3条水平
for(n=0;n<=8;n++)
{
if(cube[n]+cube[n+9]+cube[n+18]==0||cube[n]+cube[n+9]+cube[n+18]==3)
{count=count+1;}
}//9条竖直
for(n=0;n<=18;n=n+9)
{
if(cube[n]+cube[n+4]+cube[n+8]==0||cube[n]+cube[n+4]+cube[n+8]==3)
{count=count+1;}
}//3条水平面对角线
for(n=2;n<=20;n=n+9)
{
if(cube[n]+cube[n+2]+cube[n+4]==0||cube[n]+cube[n+2]+cube[n+4]==3)
{count=count+1;}
}//3条水平面对角线
for(n=0;n<=6;n=n+3)
{
if(cube[n]+cube[n+10]+cube[n+20]==0||cube[n]+cube[n+10]+cube[n+20]==3)
{count=count+1;}
}//3条竖直面对角线
for(n=2;n<=8;n=n+3)
{
if(cube[n]+cube[n+8]+cube[n+16]==0||cube[n]+cube[n+8]+cube[n+16]==3)
{count=count+1;}
}//3条竖直面对角线
for(n=0;n<=2;n++)
{
if(cube[n]+cube[n+12]+cube[n+24]==0||cube[n]+cube[n+12]+cube[n+24]==3)
{count=count+1;}
}//3条竖直面对角线
for(n=6;n<=8;n++)
{
if(cube[n]+cube[n+6]+cube[n+12]==0||cube[n]+cube[n+6]+cube[n+12]==3)
{count=count+1;}
}//3条竖直面对角线
if(cube[0]+cube[13]+cube[26]==0||cube[0]+cube[13]+cube[26]==3)
{count=count+1;}
if(cube[2]+cube[13]+cube[24]==0||cube[2]+cube[13]+cube[24]==3)
{count=count+1;}
if(cube[8]+cube[13]+cube[18]==0||cube[8]+cube[13]+cube[18]==3)
{count=count+1;}
if(cube[6]+cube[13]+cube[20]==0||cube[6]+cube[13]+cube[20]==3)
{count=count+1;}//4条体对角线
return(count);
}
int compare(int *count)
{
if(count[1]<count[0]){count[0]=count[1];}
return(count[0]);
}
void main()
{
int cube[27]={0};
int aid[27]={0};
int count[2]={49,49};
char c;
int pause;
int i=0,num=0;
for(aid[0]=0;aid[0]<=14;aid[0]++)
for(aid[1]=aid[0]+1;aid[1]<=15;aid[1]++)
for(aid[2]=aid[1]+1;aid[2]<=16;aid[2]++)
for(aid[3]=aid[2]+1;aid[3]<=17;aid[3]++)
for(aid[4]=aid[3]+1;aid[4]<=18;aid[4]++)
for(aid[5]=aid[4]+1;aid[5]<=19;aid[5]++)
for(aid[6]=aid[5]+1;aid[6]<=20;aid[6]++)
for(aid[7]=aid[6]+1;aid[7]<=21;aid[7]++)
for(aid[8]=aid[7]+1;aid[8]<=22;aid[8]++)
for(aid[9]=aid[8]+1;aid[9]<=23;aid[9]++)
for(aid[10]=aid[9]+1;aid[10]<=24;aid[10]++)
for(aid[11]=aid[10]+1;aid[11]<=25;aid[11]++)
for(aid[12]=aid[11]+1;aid[12]<=26;aid[12]++)
{ setnum(cube,27,aid,27);
count[1]=check(cube);
compare(count);
if(count[0]==4)
{
num++;
}
for(i=0;i<27;i++){cube[i]=0;}
}
cout<<"the minmum number of lines is "<<count[0];
cout<<"\n";
cout<<"yeah,I success";
cout<<"\n";
cout<<"total="<<num;
cout<<"\n";
cout<<"press any key then enter to exit!!!";
cin>>pause;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -