C. Engineer Artem
给出一个n×m(m,n<100)的矩阵 其中每个位置有一个数a(i,j)
现在可以选择其中任意几个位置(i,j)使得其数值变为a(i,j) +1
得到一个新的矩阵b(i,j)
问如何构造得到一个任意两个相邻的位置的数值都不相同的矩阵b(i,j)
并输出b(i,j)
(一定存在一个b(i,j)矩阵满足条件)
考虑到对某些位置的数值+1
实际上是改变其奇偶性
那么对于矩阵a 可以将其中的元素改成奇偶交替 就能得到矩阵b了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' #define Turnoff std::ios::sync_with_stdio(false)
const int Max=100+5; const int Mod=1e9+7; const int inf=0x3f3f3f3f;
#ifdef __DEBUG__ #define DeBug(format, ...) \ { \ fprintf(stdout, "[%s:%d]" format "", \ __FUNCTION__ , __LINE__, ##__VA_ARGS__); \ } #else #define DeBug(format,...) #endif ll mat[Max][Max]; int n,m; int main(void){ Turnoff; int t;cin>>t; while(t--){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>mat[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if((i+j)%2){ if(mat[i][j]%2)mat[i][j]++; } else{ if(mat[i][j]%2==0)mat[i][j]++; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<mat[i][j]<<" "; } cout<<endl; } } }
|