uva11098

来源:互联网 发布:大数据时代案例分析 编辑:程序博客网 时间:2024/06/06 18:41
wo zi ji de   mei you kao lv  congfu de xian xian  /*************************************************************************    > File Name: 10098.cpp    > Author: ma6174    > Mail: ma6174@163.com     > Created Time: 2015年11月30日 星期一 15时36分07秒 ************************************************************************/#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>int t;char str[1050];using namespace std;int num[10];  int maxn=10;  int x=1;  void chushi()  {      int i;      for(i=0;i<maxn;i++)      num[i]=i+1;  }  void put()  {      int i;       for(i=0;i<maxn;i++)      cout<<str[num[i]-1];      cout<<endl;  }    void jiaohuan(int min,int max)//将下标max的移动到下标为min,1234,移动后4123  {      int i;      int temp=num[max];      for(i=max;i>min;i--)          num[i]=num[i-1];          num[min]=temp;       }    void jiaohuan2(int min,int max)//还原  {      int i;      int temp=num[min];      for(i=min;i<max;i++)          num[i]=num[i+1];          num[max]=temp;  }    void paixu(int fanwei)//范围内排序  {           if (fanwei==1)      {          put();          return;      }      int i;      for(i=maxn-fanwei;i<maxn;i++)//范围内依次将数据移到首位      {          jiaohuan(maxn-fanwei,i);          paixu(fanwei-1);          jiaohuan2(maxn-fanwei,i);      }  }  int cmp(const void *a,const void *b);int main()  {      maxn=3;//设置排的数  //scanf("%d",&maxn);cin>>t;t+=1;int T=0;while(t--){//shuru();gets(str);if(T+1)printf("\n");maxn=strlen(str);qsort(str,maxn,sizeof(str[0]),cmp);chushi();  paixu(maxn);if(T)printf("\n");T++;//printf("\n");}     return 0;  }  int cmp(const void *a,const void *b){return strcmp((char *)a,(char *)b);}



bie ren  de

#include<cstdio>#include<cstring>#include<cstdlib>char s[15], a[15];int len;int cmp( const void *_p, const void *_q){    char *p = ( char *)_p;    char *q = ( char *)_q;    return *p - *q;}void dfs( int cur){    if( cur == len)        printf( "%s\n", a);    else for( int i = 0; i < len; i ++)    if( !i || s[i] != s[i - 1])    {        int c1 = 0, c2 = 0;        for( int j = 0; j < cur; j ++) if( a[j] == s[i]) c1 ++;        for( int j = 0; j < len; j ++) if( s[i] == s[j]) c2 ++;        if( c1 < c2)        {            a[cur] = s[i];            dfs(cur + 1);        }    }}int main(){    int tt;    scanf( "%d", &tt);    while( tt --)    {        scanf( "%s", s);        len = strlen( s);        memset( a, 0, sizeof a);        qsort( s, len, sizeof( char), cmp);        dfs( 0);        printf( "\n");    }    return 0;}


0 0
原创粉丝点击