1. 程式人生 > 其它 >poj 3032(水題)

poj 3032(水題)

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    int data[150];
    int t,n,cnt,i,j,p,pos;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        if(n==1){
            printf("1\n");
            continue;
        }
        memset(data,0,sizeof data);
        cnt 
= 1; for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ data[cnt++] = -1; } data[cnt++] = i; if(cnt>13)break; } for(i=n;i>=1;i--){ if(data[i]!=-1){ j = i; pos = data[i];
break; } } p = -1; while(true){ do{ j++; if(j==n+1)j = 1; }while(data[j]!=-1); p++; if(p==pos+1){ data[j] = p; if(p==n)break; p = -1; pos
++; } } for(int i=1;i<n;i++){ printf("%d ",data[i]); } printf("%d\n",data[n]); } return 0; }