首页 > 代码库 > dfs qipan

dfs qipan

#include<iostream>
char data[16];
int a[16];
int d[4]={-4,1,4,-1};
char b[16];
int flag;
int count=0;
int min=1000;
void dfs(int step)
{
	if(step==16)
	{   
		/* for(int i=0;i<16;i++)
			 printf("%d",a[i]);
		 printf("\n");*/
		count=0;flag=1;
		for(int i=0;i<16;i++)
			b[i]=data[i];
		for(int i=0;i<16;i++)
		{
			/*if(a[i]==0)
				b[i]=data[i];*/
			if(a[i]==1)
			{     
				if(b[i]==‘b‘)
			      {
					  b[i]=‘w‘;
				  }
				else
			                    
				{
					b[i]=‘b‘;
				}
				for(int j=0;j<4;j++)
					{
						if(i+d[j]>=0&&i+d[j]<16)
						{     
							if(b[i+d[j]]==‘w‘)
						       { 
								   b[i+d[j]]=‘b‘;
							  }
						  else 
						  {
						     b[i+d[j]]=‘w‘;
						   }
						}

				   }
			}	

		
		}	/* for(int i=0;i<16;i++)
		  {
			printf("%c",b[i]);
		  }
			 printf("\n");*/
		
			for(int i=0;i<16;i++)
               { 
				   if(b[0]==b[i])
			       flag=1;
			        else
					{
				     flag=0;
				   break;
			        }
			   }
	/*if(b[0]==b[1]==b[2]==b[3]==b[4]==b[5]==b[6]==b[7]==b[8]==b[9]==b[10]==b[11]==b[12]==b[13]==b[14]==b[15])
		   flag=1;*/
			if(flag==1)
			{  
				 printf("!!");
               for(int i=0;i<16;i++)
                 { if(a[i]==1)
				     count++;
			      }
			   printf("%d  ",count);
			}
			
		
		return ;
	}
	for(int i=0;i<2;i++)
	 {  
		 a[step]=i;
	     dfs(step+1);
	 }
}
int main()
{    freopen("input.txt","r",stdin);
	  for(int i=0;i<16;i++)
		{   
			 scanf("%c",&data[i]);
		}
	for(int i=0;i<16;i++)
		{
			b[i]=data[i];
		}
	 
	dfs(0);

}

 

dfs qipan