zoukankan      html  css  js  c++  java
  • 【构造】Gym

    根据n-1推n的情况,让n从每一个的最右走到最左,再从下一个最左走到最右,如此往复即可。

    #include<cstdio>
    using namespace std;
    int n,a[50000][10],e,b[50000][10],e2;
    int main(){
    	scanf("%d",&n);
    	if(n==1){
    		puts("1");
    		return 0;
    	}
    	e=1;
    	a[1][1]=1;
    	for(int i=2;i<=n;++i){
    		e2=0;
    		for(int j=1;j<=e;++j){
    			if(j%2==1){
    				for(int k=i;k>=1;--k){
    					int cnt=0;
    					++e2;
    					if(k==1){
    						++cnt;
    						b[e2][cnt]=i;
    						if(i==n)printf("%d%c",b[e2][cnt],cnt==i?'
    ':' ');
    					}
    					for(int l=1;l<i;++l){
    						++cnt;
    						b[e2][cnt]=a[j][l];
    						if(i==n)printf("%d%c",b[e2][cnt],cnt==i?'
    ':' ');
    						if(l==k-1){
    							++cnt;
    							b[e2][cnt]=i;
    							if(i==n)printf("%d%c",b[e2][cnt],cnt==i?'
    ':' ');
    						}
    					}
    				}
    			}
    			else{
    				for(int k=1;k<=i;++k){
    					int cnt=0;
    					++e2;
    					if(k==1){
    						++cnt;
    						b[e2][cnt]=i;
    						if(i==n)printf("%d%c",b[e2][cnt],cnt==i?'
    ':' ');
    					}
    					for(int l=1;l<i;++l){
    						++cnt;
    						b[e2][cnt]=a[j][l];
    						if(i==n)printf("%d%c",b[e2][cnt],cnt==i?'
    ':' ');
    						if(l==k-1){
    							++cnt;
    							b[e2][cnt]=i;
    							if(i==n)printf("%d%c",b[e2][cnt],cnt==i?'
    ':' ');
    						}
    					}
    				}
    			}
    		}
    		e=e2;
    		for(int j=1;j<=e2;++j){
    			for(int k=1;k<=i;++k){
    				a[j][k]=b[j][k];
    			}
    		}
    	}
    	return 0;
    }
  • 相关阅读:
    课堂练习
    《你的灯亮着吗》第二篇总结
    四则运算2程序
    《你的灯亮着吗》第一篇总结
    四则运算2
    阅读计划
    四则运算
    《人月神话》读后感
    软件演化
    软件测试
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/7219600.html
Copyright © 2011-2022 走看看