24h購物| | PChome| 登入
2009-11-14 19:30:05| 人氣507| 回應0 | 上一篇 | 下一篇

該死的計概

推薦 0 收藏 0 轉貼0 訂閱站台

作法 : 遞迴模擬

大的放右邊  小的放左邊  由上而下比較找出地方放

/********************************************************/

#include<stdio.h>
#include<stdlib.h>
int NUM[1001];
int link[1001][2]={0},top;
void Tree(int now,int value)
{
    if(value>NUM[now])
      {
         if(link[now][1]==0)
            link[now][1]=++top,NUM[top]=value;
         else
            Tree(link[now][1],value);
      }
    else
      {
         if(link[now][0]==0)
            link[now][0]=++top,NUM[top]=value;
         else
            Tree(link[now][0],value);
      }
}
void print(int now)
{
   printf("%d ",NUM[now]);
   if(link[now][0]!=0) print(link[now][0]);
   if(link[now][1]!=0) print(link[now][1]);
}
main()
{
   int N,M;
    while(scanf("%d",&N)==1&&N)
        {
           int a,b,c;
           for(a=0;a<=N;a++)  link[a][0]=0,link[a][1]=0;
           scanf("%d",&M);
           NUM[1]=M,top=1;
           for(a=1;a<N;a++)
              {
                scanf("%d",&M);
                Tree(1,M);
              }
           print(1);
           puts("");
        }
    return 0;
}

台長: 來源不明

您可能對以下文章有興趣

人氣(507) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ZeroJudge 基礎+原創題庫 |
此分類下一篇:加法運算
此分類上一篇:第三題: 賓果遊戲 (bingo)

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文