您的位置:首页 > 其它

poj-3617字典序最小 贪心

2018-03-20 11:44 239 查看
[b]思路:[/b]    开始的思路没有理清,我想的是先比较首尾的,一旦发现首尾字符相同就从后往前扫,直到扫到一个后面的字符和前面的不一样就结束...还是我太菜了。
正确的思路应该是(借鉴了挑战的思路):
    定义一个标记位Left(表示是否输出的左边的字符),逐个比较首尾(0与N比、1与N-1比较、2与N-2比较...),每当满足比较条件(即两个字符不相同,一大一小)就给标记位标记上,最后根据标记位的值进行输出,切记每行满80字符要换行(PE所在)。

[b]AC代码:[/b]#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdio>
#include<queue>

using namespace std;
const int maxn=10005;
int N;
char s[maxn];
bool Left;
int main(){
cin>>N;
for(int i=0;i<N;i++)
cin>>s[i];

int a=0,b=N-1;
int ans=0;
while(a<=b){
bool Left=false;
if(s[a]==s[b]){
int k=b-1;
while(s[k]==s[a+1]&&k>=a+1)k--;
if(s[k]<s[a+1])
}
ans++;

if(ans==80){
cout<<endl;
ans=0;
}
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: