[说明]
某班有n个同学,学号分别为1,2,…,n。为了每天指派若干个同学值日,他们放弃传统单调的轮留值日,别出心裁采用“定和值日”法:每天所指派值日同学的学号之和须等于其班号m(n<m<n(n+1)/2)并且规定:不允许任何两天值日的同学完全一样。
编程使n个同学按定和m值日(正整数n、m均从键盘输入,约定n<50,m<100),求出可持续的值日天数f(n,m)。运行程序,具体求出f(19,98)的值。
[函数]
main ()
{
int b, p, i , m, n, k;
static int a[51][101]:
long s=0;
printf (" 请输入学生人数;");
scanf ("%d", &n );
printf (" 请输入定和值: ");
scanf ("%d", &m );
a[1][0]=1; a[1][1]=1; /* 数组元素赋初值*/
for ((1); j<=n; j++)
{
for (i=j;(2); i++) /* 计算 a (2, m),…, a(n, m)*/
{
(3);
b=0,
for (k=1 k<j-1; k++
(4);
a[j][i]=b; }
(5); } /* 求和s 为所求结果*/
printf (" ");
printf ("f (%d, %d ) =%1d\n", n, m, s );
}