链接
http://codeforces.com/problemset/problem/803/A
题目大意
以后英文题还得写题目大意…
就是给你个
n×n
的全
0
矩阵,你要在里面填上
题解
可以贪个心,你就直接
for i for j
枚举每个格子,然后看能不能填
1
,如果能填就填,主对角线之外的哪些点要填的话就必须填俩,主对角线上要填就填一个,我们采取能填则填的策略,一路填下去就行了
算法应该是没问题的,贪心只能靠直觉…
代码
//贪心
#include <cstdio>
#include <algorithm>
#define maxn 105
using namespace std;
int mat[maxn][maxn], N, K;
int main()
{
int i, j;
scanf("%d%d",&N,&K);
if(K>N*N){printf("-1");return 0;}
for(i=1;i<=N;i++)for(j=1;j<=N;j++)
if(mat[i][j])continue;
else
{
if(i==j and K){mat[i][j]=1;K--;continue;}
if(K>=2)K-=2, mat[i][j]=mat[j][i]=1;
}
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)printf("%d ",mat[i][j]);
printf("\n");
}
return 0;
}
本文介绍了一个关于填充矩阵的问题解决方法。该问题是要求在一个n×n的全0矩阵中填入k个1,使得矩阵按字典序排列最大,并保持矩阵的对称性。通过贪心算法进行填充,文章提供了详细的实现思路和C++代码。
581

被折叠的 条评论
为什么被折叠?



