24h購物| | PChome| 登入
2009-07-26 22:16:34| 人氣381| 回應0 | 上一篇 | 下一篇

重複排列

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

作法: 遞迴

僅供參考 不自己試試看 我出這題目就沒有意義了 ... 而我也會很*

(雖然我也是錯了 看別人寫的)

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

#include<stdio.h>     
#include<stdlib.h>     
int num[100],line[100]={0};     
int n,sum;     
void make (int k)     
{     
  int a;     
  if(k>sum)     
    {     
      for(a=1;a<=sum;a++)      
        printf("%d",line[a]);
        printf("\n");
        return;     
    }     
  else    
    {     
      for(a=1;a<=n;a++)     
        if(num[a]>0)     
          {     
            num[a]--;     
            line[k]=a;     
            make(k+1);     
            num[a]++;     
          }     
    }       
}     
main()     
{     
 while(scanf("%d",&n)==1)     
  {     
    sum=0;     
    int a;     
    for(a=1;a<=n;a++)        
      {scanf("%d",&num[a]);sum=sum+num[a];}     
    make (1);     
  }       
 return 0;        
}
    

台長: 來源不明
人氣(381) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ZeroJudge 基礎+原創題庫 |
此分類下一篇:編碼轉譯
此分類上一篇:命名規則

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