新手求助,看了半天实在找不到原因,谢谢
原始题目:有abcde,5个不同的球,准备分给甲乙丙丁戊5人,已知甲不要a球,乙不要b球,丙不要c球,问共有多少种分法。我的问题: 怀疑是continue的用法不对,程序陷入了死循环,但是我不知道为什么会陷入死循环。想请教大神告诉我原因,谢谢。(解题不是目的,参考书上有答案,主要是想知道为什么自己编的这段程序会死循环,所以不要告诉我其他的写法,只是想知道我这么写的问题所在,谢谢了)
程序代码:
#include<stdio.h> void main() { int a,b,c,d,e,i,j;//abcde 即代表甲乙丙丁戊; abcde 五个球用01234代表 int x[10]; int n=1; for(i=0;i<10;i++) x[i]=1; for(a=0;a<5;a++) { if(a=0) continue; x[a]=0; //防止重复 for(b=0;b<5;b++) { if(b=1) continue; if(x[b]) { x[b]=0; //防止重复 for(c=0;c<5;c++) { if(c=2) continue; if(x[c]) { x[c]=0; //防止重复 for(d=0;d<5;d++) { if(x[d]) { x[d]=0; //防止重复 for(e=0;e<5;e++) n++; } x[d]=1; //未找到解,重新赋1,下同 } } x[c]=1; } } x[b]=1; } x[a]=1; } printf("n=%d\n",n); }
[此贴子已经被作者于2018-11-16 17:53编辑过]