windows下Dev解10l7l3l倒水,for循环版本

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
	struct t{
		int z[3];
		int num;
		int n[100];
	}b[10050];
	int stime=1;		//数字越大.休眠时间越久 
	int m=0,i,j=0,k;
	int time1=107,time2=103,time3=710,time4=73,time5=37,time6=310;
	int head=1,tail=2,btime=0,bord;
void zzzz(){ 
    b[tail].n[b[i].n[0]]=tail;
	for(k=0;k<b[i].n[0];k++) b[tail].n[k]=b[i].n[k];
	  b[tail].n[0]++; 
	printf("\n\t%d\t%d\t%d\n",b[i].z[0],b[i].z[1],b[i].z[2]);
   	printf("%d\t%d\t%d\t%d\n",btime, b[tail].z[0],b[tail].z[1],b[tail].z[2]);
    _sleep(stime*1000); //休眠时间单位ms 
	tail++; 
}
int a[6][3]={
	0,1,2,
	0,2,1, 
	1,0,2,
	1,2,0,
	2,0,1, 
	2,1,0 
};
int main()
{
	b[0].z[0]=10;	b[0].z[1]=7;	b[0].z[2]=3;	
	b[1].z[0]=10;	b[1].z[1]=0;	b[1].z[2]=0;	b[1].n[0]=2;	b[1].n[1]=1;
				//三杯子,初始只有10L的杯子是满的 
//	b[0][1]=1;	b[1][1]=0;	b[2][1]=0;
				//三杯子,初始10L的杯子是满的 
	for(i=0;i<6;i++) {
		for(j=0;j<3;j++) {
		printf("%d ",a[i][j]);
		}
		printf("\n");
	}
	m=0;
   while(head<tail){
   	if(m==1) break;
    btime++;
    bord=tail;
    for(i=head;i<bord;i++){
	if(m==1) break; 
  		printf("\n%d\t%d\t%d\t%d\n",btime,b[i].z[0],b[i].z[1],b[i].z[2]);
  		for(j=0;j<6;j++){
    		if(b[i].z[0]==5||b[i].z[1]==5||b[i].z[2]==5){ m=1;break; }
				//找到55平分则退出 
    		if(b[i].z[a[j][0]]!=0){      //如果第a[j][0]的杯子有水
	   	 		if(b[i].z[a[j][1]]<b[0].z[a[j][1]]){
    				if(b[i].z[a[j][0]]+b[i].z[a[j][1]]<b[0].z[a[j][1]]){
			    		b[tail].z[a[j][0]]=0;                
					b[tail].z[a[j][1]]=b[i].z[a[j][0]]+b[i].z[a[j][1]];  	
    					b[tail].z[a[j][2]]=b[i].z[a[j][2]];            
} else{ b[tail].z[a[j][0]]=b[i].z[a[j][0]]+b[i].z[a[j][1]]-b[0].z[a[j][1]]; b[tail].z[a[j][1]]=b[0].z[a[j][1]]; b[tail].z[a[j][2]]=b[i].z[a[j][2]]; } zzzz(); if(b[tail-1].z[a[j][0]]==5||b[tail-1].z[a[j][1]]==5||b[tail-1].z[a[j][2]]==5){ m=1; break; } } } } } head=bord; } if(m==1){ printf("找到了!\n"); for(k=1;k<b[tail-1].n[0];k++){ for(j=0;j<3;j++) printf("%d\t",b[b[tail-1].n[k]].z[j]); printf("\n"); } } }

windows下Dev解10l7l3l倒水,for循环版本

上一篇:2021CCPC女生赛C. 连锁商店 状压DP


下一篇:AcWing 897. 最长公共子序列