百度空间 | 百度首页 
 
查看文章
 
STL中的生成排列next_permutation()。。。
2008-12-04 14:01

今天看了看TC里面的一道题,简单的说,就是给你一个字符串,要求你用这个字符串的同构,来生成一种Lucky String ,所谓Lucky String 就是字符串中任意相邻两个字母都是不相同的。

开始一直在想用组合数学怎么做,后来看到字符串只有最大10的范围,所以决定穷举。要穷举就要生成排列,自己写效率不会太高,突然看到STL中提供的一个函数:next_permutation

这是一个好东西啊,比如一个字母序列,你要生成这个序列的所有排列,可以这样:

char a[10];

do{

    for(i=0;i<10;i++) cout<<a[i]<<' ';

}while(next_permutation(a,a+10));

这样使用简单,代码看起来很漂亮,嘿嘿~

当然,这个next_permutation函数需要包含algorithm头文件。另外还提供了prev_permutation,前者是按照开始从小到大排列后生成的,后者这是从大到小。挺好用的,所以记下来!


类别:acm/icpc | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu