对于E我有些疑问
因为题中并没有说不可以有多余的1,我的思路是将上方和左边全部初始化为1
例如
4 4 矩阵
1 1 1 1
1 0 0 0
1 0 0 0
1 0 0 0
那么我的k只需要每一行每一行的赋值乘1就可以了吧?
我不明白哪里有错。还有感觉数据是不是有点假,看见有没输出的情况也算过了
#include <bits/stdc++.h> using namespace std; const int N = 1e6+6; const int M = 3e5+7; #define ll long long #define en '\n' #define debug cout<<"------" #define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int dx[]={1,-1,0,0,1,1,-1,-1}; int dy[]={0,0,1,-1,1,-1,1,-1}; int as[1007][1007]; void solve() { int n,m,k; cin>>n>>m>>k; if((n-1)*(m-1)<k) { cout<<"-1"; return ; } for(int i=1;i<=m;i++)as[1][i]=1; for(int i=1;i<=n;i++)as[i][1]=1; for(int i=2;i<=n;i++) { for(int j=2;j<=m;j++) { if(!k)break; as[i][j]=1; k--; } if(!k)break; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++)cout<<as[i][j]<<" "; cout<<en; } } int main() { // fast int t; t=1; // cin>>t; while(t--) { solve(); cout<<en; } }