Guest User

rdigits.cpp

a guest
Jul 19th, 2010
128
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include"stdlib.h"
  2. #include"stdio.h"
  3. #include"string.h"
  4. #include<stack>
  5. #include<list>
  6. #include<vector>
  7. #include<queue>
  8.  
  9. using namespace std;
  10.  
  11. int charcomp(const void *a,const void *b){
  12.     return(*(char *)a)-(*(char *)b);
  13. }
  14.  
  15. FILE *io;
  16.  
  17. char poia_na_bgaleis[501];
  18. short posa_na_bgaleis;
  19.  
  20. list<char>maxi;
  21. char yparxei_maxi;
  22.  
  23. void tel_lista(list<char> l){
  24.     if(!yparxei_maxi){
  25.         yparxei_maxi=1;
  26.         maxi=l;
  27.         return;
  28.     }
  29.     list<char>::iterator i1,i2;
  30.     for(i2=l.begin(),i1=maxi.begin();*i1<=*i2;i1++,i2++){
  31.         if(*i1<*i2){
  32.             maxi=l;
  33.             return;
  34.         }
  35.     }
  36. }
  37.  
  38. void bgale(list<char> apo_pou, short poio){
  39.     list<char>::iterator it;
  40.     list<char>l_temp;
  41.     list<char>::iterator lit;
  42.     int i,j;
  43.    
  44.     /*
  45.     printf("Exw ");
  46.     for(it=apo_pou.begin();it!=apo_pou.end();it++){
  47.         printf("%c",*it);
  48.     }
  49.     printf("\n");
  50.     */
  51.    
  52.     if(poio==posa_na_bgaleis){
  53.         //printf("Telos!\n");
  54.         tel_lista(apo_pou);
  55.     }
  56.    
  57.  
  58.    
  59.     for(i=0,it=apo_pou.begin();it!=apo_pou.end();i++,it++){
  60.         if(*it==poia_na_bgaleis[poio]){
  61.             //printf("Bgazw %c\n",*it);
  62.             l_temp=apo_pou;
  63.             lit=l_temp.begin();
  64.             advance(lit,i);
  65.             l_temp.erase(lit);
  66.             bgale(l_temp,poio+1);
  67.            
  68.         }
  69.        
  70.     }
  71.    
  72.     //printf("Feugw\n");
  73. }
  74.  
  75. int main(){
  76.     int i,j,k;
  77.     char arxiko[501];
  78.     list<char>arxiko_bgale;
  79.     io=fopen("rdigits.in","r");
  80.     fscanf(io,"%s",arxiko);
  81.     fscanf(io,"%s",poia_na_bgaleis);
  82.    
  83.     //printf("Arxiko strlen: %d\n",strlen(arxiko));
  84.     for(i=0,j=strlen(arxiko);i<j;i++){
  85.         arxiko_bgale.push_back(arxiko[i]);
  86.     }
  87.     //printf("Teliko arxiko: %d\n",arxiko_bgale.size());
  88.    
  89.     posa_na_bgaleis=strlen(poia_na_bgaleis);
  90.     qsort(poia_na_bgaleis,posa_na_bgaleis,1,charcomp);
  91.     //printf("Sort poia: %s\n",poia_na_bgaleis);
  92.    
  93.     /*
  94.     printf("Sygkriseis\n");
  95.     while(1){
  96.         arxiko_bgale.clear();
  97.         scanf("%s",arxiko);
  98.         for(i=0,j=strlen(arxiko);i<j;i++){
  99.             arxiko_bgale.push_back(arxiko[i]);
  100.         }
  101.         tel_lista(arxiko_bgale);
  102.         printf("Megisto: ");
  103.         list<char>::iterator it;
  104.         for(it=maxi.begin();it!=maxi.end();it++){
  105.             printf("%c",*it);
  106.         }
  107.         printf("\n");
  108.     }
  109.     */
  110.    
  111.     bgale(arxiko_bgale,0);
  112.    
  113.     freopen("rdigits.out","w",io);
  114.    
  115.     list<char>::iterator it;
  116.     for(it=maxi.begin();it!=maxi.end();it++){
  117.         fprintf(io,"%c",*it);
  118.     }
  119.     fprintf(io,"\n");
  120.    
  121.     fclose(io);
  122.     return 0;
  123. }
RAW Paste Data