【求助】再麻烦解释下这个程序每一步干了什么?
c语言吧
全部回复
仅看楼主
level 1
circle02 楼主
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define MAX_STEP 20 
//index: 0 - 狼,1-羊,2-菜,3-农夫,value:0-本岸,1-对岸 
int a[MAX_STEP][4]; 
int b[MAX_STEP]; 
char *name[] = 

"空手", 
"带狼", 
"带羊", 
"带菜" 
}; 
void search(int iStep) 

int i; 
if (a[iStep][0] + a[iStep][1] + a[iStep][2] + a[iStep][3] == 4) 

for (i = 0; i < iStep; i++) 

if (a[i][3] == 0) 

printf("%s到对岸\n", name[b[i] + 1]); 

else 

printf("%s回本岸\n", name[b[i] + 1]); 


printf("\n"); 
return; 

for (i = 0; i < iStep; i++) 

if (memcmp(a[i], a[iStep], sizeof(a[i])) == 0) 

return; 


if (a[iStep][1] != a[iStep][3] && (a[iStep][2] == a[iStep][1] || a[iStep][0] == a[iStep][1])) 

return; 

for (i = -1; i <= 2; i++) 

b[iStep] = i; 
memcpy(a[iStep + 1], a[iStep], sizeof(a[iStep + 1])); 
a[iStep + 1][3] = 1 - a[iStep + 1][3]; 
if (i == -1) 

search(iStep + 1); 

else if (a[iStep][i] == a[iStep][3]) 

a[iStep + 1][i] = a[iStep + 1][3]; 
search(iStep + 1); 



int main() 

search(0); 
return 0; 


2009年09月15日 05点09分 1
level 1
circle02 楼主
一定要详细一点啊。。我也知道这个程序干嘛的,就是不知道每一步干嘛的
2009年09月15日 05点09分 2
level 5
我觉得这个程序比较有意思
2009年09月15日 06点09分 3
level 1
circle02 楼主
你知道就告诉我啊。。拜托 啊
2009年09月15日 07点09分 4
1