0$房天下问答|定和值的程序分析与纠错$https://m.fang.com/ask/ask_1797679.html$https://static.soufunimg.com/common_m/m_public/201511/images/asksharedefault.png
packc/pages/ask/detail/detail?askid=1797679
-
定和值的程序分析与纠错
我在一本书上见到了这么一道题目: 某班有n个同学,学号分别为(1,2,...,n)。为了每天指派若干个同学值日,他们放弃传统单调的轮流值日,别出心裁采用“定和值日”法,每天所指派值日同学的学号之和须等于其班号m(n <m <n*(n+1)/2)。并且规定:不允许任何两天值日的同学完全一样。那么编写程序求出可持续的值日天数f(n,m)。 以下是书上的解答: #include <stdio.h>int main(){ int b,p,i,j,m,n,k; static int a[51][101]; long s=0; printf("请输入学生人数:"); scanf_s("%d",&n); printf("请输入定和值:"); scanf_s("%d",&m); a[1][0]=1;/*数组元素赋初值*/ a[1][1]=1; for(j=2;j<=n;j++) { for(i=j;i<=m;i++)/*计算a(2,m),...,a(n,m)*/ { p=i-j; b=0; for(k=1;k<j-1;k++) b+=a[k][p]; a[j][i]=b; } s+=a[j][m]; } printf("f(%d,%d)=%1d",n,m,s); return 0;}首先惭愧的说,我还没有理解这个程序所表达的意思,然后我发现它是有错误的,比如输入n=3,m=5,结果应该是可以持续1天,但是程序运行结果是0,希望有人能帮我分析一下这段代码的意义,然后可以的话把其中的错误找出来,谢谢!
更多
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。

关注成功