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

📄 cube.cpp

📁 这是计算一个3*3*3的立方体中
💻 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 + -