哪位高人指点一下~幸运方阵的问题!
[程序说明]
输入一个方阵阶数和"幸运数",生成幸运方阵.幸运方阵是指从方阵中任意划去一行和一列,记下交叉点的数值,再从方阵剩余部分任意划去一行一列,再记下交叉点数值,继续这一过程,当方阵不剩任何元素时,所有记下的元素值之和恰好为输入的幸运数.
按规定的划法,所有记下的交叉点元素两两均是不同行不同列,并且这些元素的全体刚好覆盖了方阵的全部行列.
在程序中,每行给定一个数值,每列也给定一个数值,并且所有给定的行、列数值之和为输入的幸运数。在填写矩阵数据时,某位置上的值就为该位置和行数值加上该位置的列数值。
在程序中出现的函数rand()的功能是返回一个随机正整数。
代码不全,哪位高人能帮我全部添好,分析一下~谢谢了~耐心等待中~
我还是C语言的小菜鸟~
[程序]
#include <stdio.h>
#include <math.h>
#define N 10
/*函数rand()的代码略去*/
main()
{
int lucky[N][N],row[N],col[N];
int n,lucky_n,k,sum,i,j;
scanf("%d",&n) /*输入幸运方阵阶数n*/
scanf("%d",&lucky_n); /*输入幸运数字*/
k=lucky_n/n;
if(k==0)
{
printf("\n输入的幸运数字太小!“);
exit(0);
}
sum=0;
for(i=0;i<n;i++)
{
row=rand()%k;
col=rand()%k;
sum+=(1); /* (1)处填"row+col" */
}
col[n-1]=col[n-1]+(2); /* (2)处填"sum-lucky_n" */
/* 生成幸运方阵 */
for(i=0;i<n;i++)
for(j=0;j<n;j++)
(3); /* (3)处填"a[j]=row+col[j]" */
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%4d",lucky[j]);
printf("\n");
}
}
代码不全,哪位高人能帮我全部添好,分析一下~谢谢了~耐心等待中~
我还是C语言的小菜鸟~