程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 字典樹

字典樹

編輯:C++入門知識

  [cpp]   /*        */   #include<iostream>   #include<cstdio>   #include<malloc.h>   using namespace std;   #define manx 12      struct node{       int num;       node*next[manx];   };      int n,r,stack[20];      void init(node *tree,int n){       tree->num = n;       for(int i=0;i<manx;i++)           tree->next[i]=NULL;   }      void make(node *tree,int n){       init(tree,n);       for(int i=1;i<=n-1;i++){           if(tree->next[i]==NULL){               node *p = new node();               tree->next[i]=p;               make(p,n-i);           }       }   }      void query(node *tree,int k){       if(k==r){           for(int i=1;i<=k;i++)               printf("%d",stack[i]);           printf("\n");           return ;       }       for(int i=1;i<manx;i++){           if(tree->next[i]==NULL) continue;           stack[++k] = tree->next[i]->num;           query(tree->next[i],k);           k--;       }   }      int main(){           while(cin>>n>>r){           for(int i=n;i>=1;i--){               node *tree = new node();                       make(tree,i);               stack[1]=tree->num;               query(tree,1);           }           }   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved