查看文章 |
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,前者是按照开始从小到大排列后生成的,后者这是从大到小。挺好用的,所以记下来! |
最近读者: