【構造】UVALive - 7269 I - Snake Carpet
阿新 • • 發佈:2018-11-06
I - Snake Carpet UVALive - 7269
題意:構造出一個矩陣,使得矩陣含有n條蛇,每條蛇的長度是1到n,並且奇數長度的蛇有奇數個拐彎,偶數長度的蛇有偶數個拐彎.
5 5 5 3 3 5 4 4 3 2 5 4 4 1 2 5 5 5 3 3 6 6 5 4 4 3 2 6 6 5 4 4 1 2 6 6 5 5 5 3 3 6 6 5 4 4 3 2 6 6 5 4 4 1 2 7 6 7 7 7 7 7 7 6
特判1-5的
其他就是偶數放右,奇數放左
#include <bits/stdc++.h> using namespace std; int n; void shuchu() { if(n==1) { printf("1 1\n"); printf("1 1\n"); } else if(n==2) { printf("1 3\n"); printf("1 1\n"); printf("1 2 1 3\n"); } else if(n==3) { printf("2 3\n"); printf("1 2\n"); printf("1 3 2 3\n"); printf("1 1 2 1 2 2\n"); } else if(n==4) { printf("2 5\n"); printf("1 4\n"); printf("1 5 2 5\n"); printf("1 1 2 1 2 2\n"); printf("1 2 1 3 2 3 2 4\n"); } else if(n==5) { printf("3 5\n"); printf("3 4\n"); printf("1 4 1 5\n"); printf("2 4 2 5 3 5\n"); printf("2 2 2 3 3 3 3 2\n"); printf("3 1 2 1 1 1 1 2 1 3\n"); } } int main() { while(~scanf("%d",&n)) { if(n<=5) { shuchu(); continue; } if(n%2) printf("%d %d\n",(n+1)/2,n); else printf("%d %d\n",n/2,n+1); printf("3 4\n"); printf("1 4 1 5\n"); printf("2 4 2 5 3 5\n"); printf("2 2 2 3 3 3 3 2\n"); printf("3 1 2 1 1 1 1 2 1 3\n"); for(int i=6;i<=n;i++) { if(!(i%2)) { int t=i/2; if(i==n) { for(int j=t;j>=1;j--) { //cout<<j<<" "<<i<<" "; printf("%d %d ",j,i); } for(int j=1;j<=t;j++) { if(j!=t) printf("%d %d ",j,i+1); else printf("%d %d\n",j,i+1); } } else { for(int j=t-1;j>=1;j--) printf("%d %d ",j,i); for(int j=1;j<=t+1;j++) { if(j!=t+1) printf("%d %d ",j,i+1); else printf("%d %d\n",j,i+1); } } } else { for(int j=1;j<=i-1;j++) printf("%d %d ",(i+1)/2,j); printf("%d %d\n",(i-1)/2,i-1); } } } return 0; }