国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

POJ3617 Best Cow Line

2019-11-08 03:03:19
字體:
供稿:網(wǎng)友

問題鏈接:POJ3617 Best Cow Line。

問題簡(jiǎn)述:輸入一個(gè)正整數(shù)N,再輸入N行,每行包含一個(gè)字母('A'-'Z'),將這些字母按順序構(gòu)成一個(gè)字符串S。按照以下規(guī)則取字符,順序構(gòu)成一個(gè)新的字符串T,T是按照字典順序最小的。

1.從S的頭取一個(gè)字符并且刪除該字符,連接到T中(開始時(shí)T為空串);

2.從S的尾取一個(gè)字符并且刪除該字符,連接到T中。

問題分析:這是用一個(gè)字符串構(gòu)建另外一個(gè)字符串的問題。比較S的首字符和尾字符,取其小連接到T中即可;當(dāng)首尾字符相同時(shí),則需要比較下一個(gè),盡量取下一個(gè)較小的;當(dāng)S是一個(gè)回文串時(shí),則從哪邊取字符結(jié)果都是一樣的。

程序說明:使用一個(gè)函數(shù)test()來比較哪邊更小,是一個(gè)最為有效的方法,可以使得程序邏輯更加簡(jiǎn)潔。需要注意的一點(diǎn)是,輸出時(shí),每行最多輸出80個(gè)字符,即每80個(gè)字符輸出一個(gè)換行。

AC的C++語言程序如下:

/* POJ3617 Best Cow Line */#include <iostream>using namespace std;//#define DEBUGconst int LEFT = 1;const int RIGHT = 2;const int MAXN = 2000;char a[MAXN+1];int test(char s[], int start, int end){    while(start < end) {        if(s[start] < s[end])            return LEFT;        else if(s[start] > s[end])            return RIGHT;        start++;        end--;    }    return LEFT;}int main(){    int n;    cin >> n;    for(int i=0; i<n; i++)        cin >> a[i];    a[n] = '/0';#ifdef DEBUG    cout << a << endl;#endif    int start=0, end=n-1, count=0;    for(int i=0; i<n; i++) {        if(test(a, start, end) == LEFT)            cout << a[start++];        else            cout << a[end--];        if(++count == 80) {            count = 0;            cout << endl;        }    }    return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 紫阳县| 西安市| 丰镇市| 天长市| 武城县| 邯郸县| 和平区| 沽源县| 长沙县| 姚安县| 黔东| 巴林左旗| 蒙自县| 海口市| 宜城市| 新蔡县| 泰顺县| 左权县| 连平县| 锡林浩特市| 新郑市| 平凉市| 沁水县| 壤塘县| 佛坪县| 二连浩特市| 横峰县| 神木县| 全州县| 遂昌县| 黄浦区| 南昌市| 黑龙江省| 金山区| 陆河县| 墨脱县| 杭州市| 英德市| 星子县| 长岭县| 淮南市|