poj 3032(水題)
阿新 • • 發佈:2021-12-05
#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; }