题意
给出n个字符,现在要求组合成为一个新的字符串。有两个操可以任意选择 1. 从原来的字符串头中拿出一个字母 2. 从原来的字符串尾中拿出一个字母
这道题我又重新做了一遍,我深深地知道自己基础知识掌握的太少、不牢固,现在认认真真的做,每次都要自己思考。
方法:
每次选取字母的时候一定要选取小的(贪心策略),所以可以写一个函数来判断。 要注意的是输出格式要求。满80个字母才能输出换行符。
#include <iostream>#include <cstring>#include <cstdio>using namespace std;int n;char s[10005];int serch(int a,int b){ while(s[a] == s[b] && a <= b) { a++,b--; } if(a == b || s[a] < s[b]) { return true; } else return false;}int main(){ //freopen("t.txt","r",stdin); while(scanf("%d",&n) != EOF) { getchar(); for(int i = 1;i <= n; i++) { scanf("%c",&s[i]); getchar(); } int pos = 0; int a = 1,b = n; for(int i = 0;i < n; i++) { int flag = serch(a,b); if(flag) { PRintf("%c",s[a++]); pos++; if(pos%80 == 0) printf("/n"); } else { pos++; printf("%c",s[b--]); if(pos%80 == 0) printf("/n"); } } } return 0;}新闻热点
疑难解答