nbsp; if(a[i][3] == 0) printf("farmer "); if(a[i][0] && a[i][1] && a[i][2] && a[i][3]) printf("none"); printf(" "); printf("west: "); if(a[i][0] == 1) printf("wolf "); if(a[i][1] == 1) printf("goat "); if(a[i][2] == 1) printf("cabbage "); if(a[i][3] == 1) printf("farmer "); if(!(a[i][0] || a[i][1] || a[i][2] || a[i][3])) printf("none"); printf("\n\n\n"); if(i<Step) printf(" the %d time\n",i+1); if(i>0 && i<Step) { if(a[i][3] == 0) /*农夫在本岸*/ { printf(" -----> farmer "); printf("%s\n", name[b[i] + 1]); } else /*农夫在对岸*/ { printf(" <----- farmer "); printf("%s\n", name[b[i] + 1]); } } } printf("\n\n\n\n"); return 0; } for(i=0; i<Step; i++) { if(memcmp(a[i],a[Step],16) == 0) /*若该步与以前步骤相同,取消操作*/ { return 0; } } /*若羊和农夫不在一块而狼和羊或者羊和白菜在一块,则取消操作*/ if(a[Step][1]!=a[Step][3] && (a[Step][2] == a[Step][1] || a[Step][0] == a[Step][1])) { return 0; } /*递归,从带第一种动物开始依次向下循环,同时限定递归的界限*/ for(i=-1; i< |