例如,有一种可能是:20,5,4,2,0
/* 分析: 四瓶酒,最后一瓶时,人都倒下了。 4<=n<=20 n,a,c,d,e 分别代表船的人数,第一次喝醉的人,第二次喝醉的人,第三次喝醉的人,第四次喝醉的人 1/n+1/n-a+1/n-a-b+1/n-a-b-c ==1 这是判断船长喝了一瓶酒的条件 (n-a)*(n-a-b)*(n-a-b-c)+n*(n-a-b)*(n-a-b-c)+n*(n-a)*(n-a-b-c)+n*(n-a)*(n-a-b) ==n*(n-a)*(n-a-b)*(n-a-b-c) 上式的去分母得到的等式 还有就是a+b+c+d==n的判断 */ #include<stdio.h> int main() { int a,b,c,d,n; for(n=4;n<=20;n++) for(a=1;a<=(n-3);a++) for(b=1;b<=(n-3);b++) for(c=1;c<=(n-3);c++) for(d=1;d<=(n-3);d++) { if(a+b+d+c==n&&((n-a)*(n-a-b)*(n-a-b-c)+n*(n-a-b)*(n-a-b-c)+n*(n-a)*(n-a-b-c)+n*(n-a)*(n-a-b)==n*(n-a)*(n-a-b)*(n-a-b-c)) ) printf("%d,%d,%d,%d,%d\n",n,n-a,n-a-b,n-a-b-c,0); } return 0; }这道题刚看时分析得时候少看了一个条件,就是船长刚好喝了一瓶的条件,最后条件缺失,得出的情况很多,后来才知道题目看错了,在看题目的时候一定要读清题意。