zoukankan      html  css  js  c++  java
  • uva 10098 Generating Fast(全排列)

    还是用的两种方法,递归和STL,递归那个是含有反复元素的全排列,这道题我 没有尝试没有反复元素的排列,由于从题目上并没有发现一定是有反复元素的()

    贴代码:

    <span style="font-family:Courier New;font-size:18px;">#include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    using namespace std;
    int cmp(const void *a,const void *b)
    {
    	return *(char *)a - *(char *)b;
    }
    int main()
    {
    		int T;
    		char a[15];
    		scanf("%d",&T);
    		while(T--)
    		{
    			scanf("%s",a);
    			int len = strlen(a);
    			qsort(a,len,sizeof(a[0]),cmp);
    			puts(a);
    			while(next_permutation(a,a+len))
    			{
    				puts(a);
    			}	
    			puts("");
    		}	
    		return 0;
    } </span>
    递归:

    <span style="font-family:Courier New;font-size:18px;">#include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    int cmp(const void *a,const void *b)
    {
    	return *(char *)a - *(char *)b;
    }
    void solve(int len,char *a,char *b,int cur)
    {
    	int i,j;
    	if(cur == len)
    	{
    		puts(b);
    		return ;
    	}
    	else
    	{
    		for(i=0; i<len; i++)
    		{
    			if(!i||(a[i] != a[i-1]))
    			{
    				int ans1 = 0, ans2 = 0;
    				for(j=0; j<len; j++)	if(a[i] == a[j]) 	ans1++;
    				for(j=0; j<cur; j++)	if(b[j]==a[i])		ans2++;
    				if(ans2 < ans1)
    				{
    					b[cur] = a[i];
    					solve(len, a, b, cur+1);
    				}
    			}
    		}
    	}
    	return ;
    }
    int main()
    {
    		int T;
    		char a[15];
    		char b[15];
    		scanf("%d",&T);
    		while(T--)
    		{
    			memset(a,'',sizeof(a));
    			memset(b,'',sizeof(b));
    			scanf("%s",a);
    			int len = strlen(a);
    			qsort(a,len,sizeof(a[0]),cmp);
    			solve(len,a,b,0);	
    			puts("");
    		}	
    		return 0;
    } </span>



  • 相关阅读:
    19牛客暑期多校 round2 H 01矩阵内第二大矩形
    NOIP2017滚粗记
    Left 4 Dead 2(求生之路2) 游戏打不开 游戏闪退 的一种可能性以及解决方法
    Luogu P1156 垃圾陷阱
    Luogu P1376 机器工厂
    Luogu P1842 奶牛玩杂技
    Luogu P1880 石子合并
    Luogu P1441 砝码称重(fj省选)
    Luogu P1077 摆花
    Luogu P1282 多米诺骨牌
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7029190.html
Copyright © 2011-2022 走看看