020-29133788
    资 讯
    您的位置:首页 >> 资 讯 >> 软件应用 >> 编程开发 >> 正文
    使用STL解题范列

    点击:   发布日期:2013-01-25

    本文来自 www.020fix.com
    使用STL解题范列
    板主 :
        wwdfongg在此版中留下了不少使用STL来解题的范列
        特别将其整理成一篇,发文和回文皆由版主使用编辑摆在一起


    问 :
    输入一个字母顺序弄溷的英文单字到一字元阵列内,请写一个程式将此
        输入的错误英文单字由第一个字母起使用邻近字母对调方式一步一步地
        回复原有正确英文字顺序,并将中间过程印出,例如: 输入原为 apple
        苹果的错误单字 epalp ,则程式应印出:

                  epapl -> eappl -> aeppl -> apepl -> appel ->apple

    答 :

    另类作法    最好不要直接将以下程式当作业交  
    找书将以下的 find, copy, swap 等函式的意义搞清楚  再用简单的语法替代
    否则很容易被--抓包
    复制内容到剪贴板
    代码:
    #include <iostream>
    #include <algorithm>
    #include <iterator>

    using namespace std ;

    int main() {
       
        const int S = 5 ;
        char  correct[S] = { 'a' , 'p' , 'p' , 'l' , 'e' } ;
        char  wrong[S] = { 'e' , 'p' , 'a' , 'p' , 'l' } ;
       
        int i  ;
        char  *j , *k ;
        copy( wrong , wrong+S , ostream_iterator<char>(cout," ") ) ;
       
        for ( i = 0 ; i < S ; ++i ) {
            j = find( wrong+i , wrong+S , correct[i]  ) ;
            
            for ( k = j ; k > wrong+i ; --k ) {
                swap( *k , *(k-1) ) ;
                cout << " --> " ;
                copy( wrong , wrong+S , ostream_iterator<char>(cout," ") ) ;
             }   
        }
        cout << endl ;
        system("pause") ;
        return 0 ;
    }