链接
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;
}