poj 1256/1732/1833/1146 C++stl全排列

今天一口气做了关于全排列的4道题目,把这些放到这里,总结一下~

poj 1256 输出全排序,取出全排序中重复的

poj 1732 输出全排列

poj 1833 输出某个序列后的第几个全排序

poj 1146 输出某个序列后的全排列,无输出No Successor

 

poj 1731主要的代码如下

 

  • Source Code
  • #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    #define N 201
    using namespace std;
    
    char str[N];
    
    int f(char x)
    {
    	if(x>='a' && x<='z') return (x-'a'+1)*2;
    	else return (x-'A')*2+1;
    }
    
    bool cmp(char x, char y)
    {
    	return f(x)<f(y);
    }
    
    int main()
    {
    	
    	cin>>str;
    	int n=strlen(str);
    	sort(str,str+n,cmp);
    	do {
    		cout<<str<<endl;
    	}while( next_permutation(str,str+strlen(str),cmp) );
    
    
    	return 0;
    }

主要就是使用next_permutation函数~可以轻松解决,算是4道水题,不过练手了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值