由1開始之連續數字a1.a2.a3...an相對有一反轉表:b1.b2...bm。其bm代表意思為:數字m的位置前面有幾個比大個個數。
2 3 6 4 0 2 2 1 0
第1個2為1前面有2個比它大的數
第2個3為2前面有3個比它大的數
第3個6為3前面有6個比它大的數....以此類推
所以答案為
5 9 1 8 2 6 4 7 3
數字1前面有2個比它大的數 5 9
數字2前面有3個比它大的數 5 9 8
輸入說明 :
輸入的每一行含有一個由m個數所組成的數列(反轉表) 1<=m<=50,
單獨一個 -1 在一行代表測試資料的結束
輸出說明 :
請輸出從 1 到 m 所代表的數列
範例輸入 :
2 3 6 4 0 2 2 1 0
-1
範例輸出 :
5 9 1 8 2 6 4 7 3
提示 :
背景知識: 陣列練習
感謝snail修正題目
程式碼 :
#include <stdio.h> #include <string.h> int main() { int i,len=0,n,point,arr[52],flag[52]={0}; char nouse; while(scanf("%d%c",&n,&nouse)==2) { if(n == -1) break; len++; point = 0; for(point=i=0;i<n+point+1;i++) if(flag[i] == 1) point++; flag[n+point] = 1; arr[n+point] = len; if(nouse == '\n') { for(i=0;i<len;i++) { flag[i] = 0; printf("%d ",arr[i]); } printf("\n"); len = 0; } } return 0; }
http://zerojudge.tw/ShowProblem?problemid=d166
沒有留言:
張貼留言