博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3617 字典序最小
阅读量:4216 次
发布时间:2019-05-26

本文共 1002 字,大约阅读时间需要 3 分钟。

错误解法:

例如 CBAC 得到的将是  CBAC 正确应为 CABC

错误原因 是 每次只比较 首尾两个元素 而忽略了总体字典序最小的问题

此种 当C相等时应继续比较 B A 进而选择右侧的C而不是当C相等时随便选取一个C

for(i = 0, j = n-1; i <= j; ){				if(S[i] < S[j]){				//	res[count++] = S[i++]; 					putchar(S[i++]);				}				else{				//	res[count++] = S[j--];					putchar(S[j--]);				}

scanf(" %c",&S[I]); 其中的换行符可以跳过 回车、空白符、换行

这里把正、反 看做两个字符串进行比较字典序,以确定当某位置字符相等时候 应该选择 哪个字符输出

#include
#define MAX 100001 char S[MAX];char res[MAX];int n;char c;int main() { while(scanf("%d",&n)!=EOF){ for(int i = 0; i < n; ++i){ scanf(" %c",&S[i]); } int i, j; int count = 0; int a = 0, b = n-1; int flag = 0; while(a <= b){ flag = 0; for(i = 0; a + i <= b; ++i){//当 字符相等时继续判断下一位 if(S[a+i] < S[b-i]){ flag = 1; break; } else if(S[a+i] > S[b-i]){ flag = 0; break; } } if(flag) putchar(S[a++]); else putchar(S[b--]); ++count; if(count == 80){ count = 0; printf("\n"); } } printf("\n"); printf("\n"); } return 0; }

转载地址:http://kmimi.baihongyu.com/

你可能感兴趣的文章
人工智能学习笔记——梯度下降算法
查看>>
人工智能学习笔记——逻辑回归算法
查看>>
两小时学会Git玩转Github
查看>>
Allegro学习笔记——焊盘概念
查看>>
Allegro学习笔记——Group_Class和Subclass
查看>>
Allegro学习笔记——Allegro中的文件类型
查看>>
Allegro学习笔记——使用Allegro制作直插封装
查看>>
Allegro学习笔记——使用Allegro制作表贴封装
查看>>
Allegro学习笔记——设置常用快捷键及Stroke
查看>>
Allegro学习笔记——调整各层颜色及可视性
查看>>
Allegro学习笔记——Allegro导入网表
查看>>
AutoCAD学习笔记——基本操作1
查看>>
STM32开源代码——28BYJ-48步进电机+ULN2003驱动程序
查看>>
STM32开源代码——四路PWM输出
查看>>
STM32开源代码——MAX30100程序
查看>>
个人项目——基于负压式玻璃清洗机器人(STM32项目)
查看>>
STM32开源代码——BMP180程序
查看>>
STM32开源代码——MAX30100程序(第二份)
查看>>
STM32开源代码——RC522程序
查看>>
STM32开源代码——JQ8400FL-10P程序
查看>>