poj-3617字典序最小 贪心
2018-03-20 11:44
162 查看
[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;
}
正确的思路应该是(借鉴了挑战的思路):
定义一个标记位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;
}
相关文章推荐
- POJ 3617 Best Cow Line(贪心+最小字典序)
- 字典序最小问题 前后删除加入 贪心poj3617
- poj-3617字典序最小 贪心
- poj-3617字典序最小 贪心
- POJ 3617 Best Cow Line [贪心] [字典序最小]
- poj-3617字典序最小 贪心
- POJ 3617 Best Cow Line (字典序最小_贪心)
- poj-3617字典序最小 贪心
- POJ 3617 Best Cow Line(字典序最小问题)
- poj 3617字典序最小问题
- POJ 3617 字典序最小问题
- POJ 3617 字典序最小
- POJ 3617 字典序贪心
- 2.2.3 字典序最小问题 -Best Cow Line(POJ 3617)
- poj 1815 Friendship (最小割 (贪心 最小割点集))
- 字典序最小问题-贪心-Best Cow Line-POJ3617
- 贪心基础题(区间调度问题+POJ_3617+POJ_3069)
- POJ 3617 Best Cow Line (贪心)
- 【codeforces 724D】【贪心】 Dense Subsequence 【一个字符串,按照一定的区间要求从中选出一些字符,使得这串字符的sort后字典序最小】
- POJ3617 Best Cow Line(贪心,字典序最小)