Constructive Algorithm Skills"/>
A. So I‘ll Max Out My Constructive Algorithm Skills
Problem - A - Codeforces
题意:
一个n*n的矩阵,找一个路径,经过所有的点,并且上升次数不大于下降次数。
解析:
直接蛇形构造路径,然后正序和逆序哪个下降多就输出哪个
#include<bits/stdc++.h>
using namespace std;
const int N=100;
int t,n,a[N][N];
signed main(){scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)scanf("%d",&a[i][j]); }vector<int>v;for(int i=1;i<=n;i++){if(i%2==0){for(int j=1;j<=n;j++) v.push_back(a[i][j]);}else{for(int j=n;j>=1;j--) v.push_back(a[i][j]);}}int cnt=0;for(int i=0;i<n*n-1;i++){if(v[i]<v[i+1]) cnt++;}if(cnt<=n*n-1-cnt){int f=1;for(int i=0;i<n*n;i++){if(f) f=0;else printf(" ");printf("%d",v[i]);}}else{int f=1;for(int i=n*n-1;i>=0;i--){if(f) f=0;else printf(" ");printf("%d",v[i]);}}puts("");}return 0;
}
更多推荐
A. So I‘ll Max Out My Constructive Algorithm Skills
发布评论