2016年6月7日 星期二

UVA 146 ID Codes (STL解) (講解strcmp,next_permutation)

/*
    題目連結

    運用C++的 STL的話
    這就是一題很簡單的題目

    strcmp 是一個比較字串大小的函數(依字典序)
    (注意要傳char*進去 而不是string)
    依小於 等於 大於 分別回傳個 <0 ==0 >0 的數字
    要 include 的函式庫是 cstring

    next_permutation 把一個陣列轉換成它的 successor 
    沒有successor的話 會回傳 false  
    要 #include <algorithm>
    題外話 這個字是演算法的意思

    另外功能相近的還有 prev_permutation
    是說 STL雖然方便 但簡單的東西
    自己會寫也是很重要的 有一些函數和遞迴概念的人
    可以看 我寫的這篇
*/
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

char s[51];

int main()
{
    while(1)
    {
        scanf("%s", s);
        if( !strcmp(s, "#") ) break;

        if( next_permutation(s, s+strlen(s)) ) printf("%s\n", s);
        else puts("No Successor");
    }
}

沒有留言:

張貼留言