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>



  • 相关阅读:
    1869六度分离
    hdu 2066 一个人的旅行
    HDU1424搬寝室
    poj 1511 Invitation Cards
    hdu 3999The order of a Tree
    hdu 2680 Choose the best route
    Hdu 3117 Fibonacci Numbers
    hdu 2962 Trucking
    钽电容黑色和黄色的区别
    ALTER FPGA通过软件设置上拉(转)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7029190.html
Copyright © 2011-2022 走看看