【ZOJ - 3212 】K-Nice (构造)
題干:
This is a super simple problem. The description is simple, the solution is simple. If you believe so, just read it on. Or if you don't, just pretend that you can't see this one.
We say an element is inside a matrix if it has four neighboring elements in the matrix (Those at the corner have two and on the edge have three). An element inside a matrix is called "nice" when its value equals the sum of its four neighbors. A matrix is called "k-nice" if and only if?k?of the elements inside the matrix are "nice".
Now given the size of the matrix and the value of?k, you are to output any one of the "k-nice" matrix of the given size. It is guaranteed that there is always a solution to every test case.
Input
The first line of the input contains an integer?T?(1 <=?T?<= 8500) followed by?Ttest cases. Each case contains three integers?n,?m,?k?(2 <=?n,?m?<= 15, 0 <=?k?<= (n- 2) * (m?- 2)) indicating the matrix size?n?*?m?and it the "nice"-degree?k.
Output
For each test case, output a matrix with?n?lines each containing?m?elements separated by a space (no extra space at the end of the line). The absolute value of the elements in the matrix should not be greater than 10000.
Sample Input
2 4 5 3 5 5 3Sample Output
2 1 3 1 1 4 8 2 6 1 1 1 9 2 9 2 2 4 4 3 0 1 2 3 0 0 4 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0題目大意:
構(gòu)造出一個(gè)含k個(gè)nice的n*m的矩陣。nice:周?chē)?個(gè)數(shù)字之和等于該數(shù)字(邊緣的數(shù)字不屬于,因?yàn)橹車(chē)鷽](méi)有4個(gè)數(shù)字)。
解題報(bào)告:
? 第一個(gè)樣例一點(diǎn)提示性都沒(méi)有,但是看到第二個(gè)樣例就明白了,可以全填0,這樣是構(gòu)造了一個(gè)滿k的矩陣,然后再依次填數(shù)就可以了。填一個(gè)數(shù),k就變小了1.
AC代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define ll long long #define pb push_back #define pm make_pair using namespace std; const int MAX = 200 + 5; int a[MAX][MAX]; int main() {int t;cin>>t;while(t--) {int m,n,k;scanf("%d%d%d",&n,&m,&k);memset(a,0,sizeof a);k = (n-2)*(m-2) - k;int cur = 0;for(int i = 1; i<=n; i++) {for(int j = 2; j<=m-1; j++) {if(cur < k) a[i][j] = ++cur;}}for(int i = 1; i<=n; i++) {for(int j = 1; j<=m; j++) {printf("%d%c",a[i][j],j == m ? '\n' : ' ');}}}return 0 ; }?
總結(jié)
以上是生活随笔為你收集整理的【ZOJ - 3212 】K-Nice (构造)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【蓝桥杯官网训练 - 历届试题】对局匹配
- 下一篇: 【POJ - 2255】Tree Rec