【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題目大意:
構造出一個含k個nice的n*m的矩陣。nice:周圍4個數字之和等于該數字(邊緣的數字不屬于,因為周圍沒有4個數字)。
解題報告:
? 第一個樣例一點提示性都沒有,但是看到第二個樣例就明白了,可以全填0,這樣是構造了一個滿k的矩陣,然后再依次填數就可以了。填一個數,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 ; }?
總結
以上是生活随笔為你收集整理的【ZOJ - 3212 】K-Nice (构造)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【蓝桥杯官网训练 - 历届试题】对局匹配
- 下一篇: 【POJ - 2255】Tree Rec