一个很简单的构造方法,由于每一行和是相同的,所有我们可以先让每行的元素是一样,而后为了让每一列的和一样的,我们可以循环右移每一行的元素,例如第一行是1 2 3 4,那么第二行就是4 1 2 3,由于是矩阵那么最终每一列都会有和行一样的元素。而在这基础上,我们可以想到最简单的构造方法就是,每一行每一列都由1个k和n-1个0组成,当然下面的代码没有这么构造,但大差不差
#include<iostream>
using namespace std;
const int N=1e3+5;
int n,k;
int main()
{
cin>>n>>k;
if(n==1)
{
cout<<k;
return 0;
}
int a=k%(n-1),b=k/(n-1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j) cout<<a<<' ';
else cout<<b<<' ';
}
cout<<endl;
}
return 0;
}

京公网安备 11010502036488号