POJ 3617——Best Cow Line

链接:http://poj.org/problem?id=3617

 

题解

#include<iostream>
using namespace std;
 
const int MAX_N=2e3+50;
int N; //输入字符串的字符个数
int count; //记录字符个数,满足换行要求 
char S[MAX_N]; //存放字符串的数组 
void solve(){
    int a=0,b=N-1;
    
    //剩余的字符串起于 S[a],止于 S[b]
    while(a<=b){ //若不取等,最终会剩余一个字符 
        //将从左起和从右起的字符进行比较
        bool left=false;
        
        for(int i=0;a+i<=b;++i){ //注意这个循环,避免了 if语句无法解决的两侧有好几个相同字符的问题,比如 ACCDBCCB
            if(S[a+i]<S[b-i]){
                left=true;
                break;
            }
            if(S[a+i]>S[b-i]){
                left=false;
                break;
            }
        }
        if(left) printf("%c",S[a++]); //注意 a++和下面的 b--用法
        else printf("%c",S[b--]);
        
        count++; //除了最后一行,每一行只包含80个大写字母。因为这个问题,PE了好多次,悲痛
        if(count==80){
            printf("\n");
            count=0;
        }
    }
    printf("\n");
}
 
int main(){
    while(~scanf("%d",&N)){
        for(int i=0;i<N;++i){
            scanf(" %c",&S[i]);
        }
        solve();    
    }
    return 0;
}

 

为了构造字典序尽可能小的字符串,越靠前的字符 ASCII值越小。所以不断取 S开头和末尾的字符进行比较,选择更小的输出

但要注意,S开头和末尾的字符相同的情况较为复杂,不清楚它们内侧字符的大小。如果用 if 语句判断,又无法解决多个相同字符的情况(总不能一直嵌套的判断下去),这时循环语句就能取得很好的效果(题解中的 for 循环)

字典序比较类的问题经常能用贪心算法

转载于:https://www.cnblogs.com/xxwang1018/p/11336258.html

ADS 使用教程(一)Workspace, Library and Cell 简要介绍ADS的基本内容 阅读详情

相关推荐

Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解

Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。

shizhibuyi1234的博客 7378

POJ 3617-字典序列

一、Java: import java.util.Scanner; public class Main{ //采用的是翻转字符串进行比较的方法,所以来说这个方法更加简单地比较字符串 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); StringBuilder ss = new String

ଳxin的博客 338

从个体到群体:Cartool实战静息态EEG微状态聚类全解析

本文详细解析了使用Cartool软件进行静息态EEG微状态聚类的完整实战流程。从个体水平聚类到群体模板提取,再到指标量化,文章深入探讨了k-means算法的应用、GFP峰值数据的使用技巧以及关键参数设置,为脑电信号处理研究者提供了从数据准备到结果解读的全方位指南。

weixin_29062671的博客 290

POJ 3617字典序最小问题

题目 分析 贪心算法,不断比较 不知道为啥没通过(Presentation Error…就很神奇) 代码 #include<iostream> #define N 999999 using namespace std; int n; char a[N]; void sovle() { int x=0,y=n-1; while(x<=y) { int sign=0; for(int i=x,j=y; i<j; j--,i++) { if(a[i]<a[j])

qq_51219814的博客 485

《AI大模型评测与智能测试》

第三篇“实践蓝图”(第6-7章)着眼于测试领域AI应用,重点介绍了RAG、AI Agent开发及构建端到端智能测试系统的方法。本书聚焦AI时代的“质量”核心,以“AI赋能测试”(AI For Testing)与“AI模型评测”(Testing For AI)为双轮驱动。内容不仅深入剖析如何科学度量AI大模型的内在质量,还系统讲解如何利用AI赋能传统软件测试,帮助读者贯通从模型原理、评测到应用开发的全链路知识。

酌沧 1139

从BIN文件到可烧录程序:深入理解ADI DSP程序读取背后的原理与安全边界

本文深入探讨了ADI DSP程序从BIN文件到可烧录程序的转换原理与安全边界,详细解析了JTAG接口、仿真器工作流程及Flash存储结构。通过Visual DSP++工具,开发者可以理解程序读取的底层机制,同时强调了知识产权保护的重要性,为嵌入式开发提供了实用建议。

weixin_27956639的博客 263

POJ3617--Best Cow Line(贪心水题)

POJ3617–Best Cow Line(贪心水题) 原题链接: POJ3617. 题目简述 给定长度为N的字符串S,要构造一个长度为N的字符串T。起初,T是一个空串,随后反复进行如下任意操作。 从S的头部删除一个字符,加到T的尾部 从S的尾部删除一个字符,加到T的尾部 标准输入: 第1行:单个整数:N 第2行:输入长度为N的字符串。 标准输出: 输出最小的字典串,每行80个。 示例输入: 6 A C D B C B 示例输出: ABCBCD 贪心思路: 目的是要构造字典序尽量小的字符串T 从

m0_51155633的博客 579

工业相机通用SDK封装实战:C#硬件抽象层(HAL)实现多品牌无缝切换

本文介绍了一种解决工业相机SDK碎片化问题的通用解决方案。作者基于多年工业视觉项目经验,提出通过硬件抽象层(HAL)和适配器模式封装不同品牌相机的SDK差异,实现统一的相机操作接口。文章详细分析了传统直接对接SDK方式的四大痛点:接口碎片化、维护成本高、业务耦合度高和稳定性差,并给出了分层架构设计方案。该方案采用三层架构(业务层、抽象层、实现层),遵循最小接口原则和高内聚低耦合等设计理念,定义了包括触发模式、像素格式等通用枚举类型,以及图像数据结构等核心抽象。最终实现的HAL层能够支持多种品牌相机,显著降低

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 576

POJ3617 Best Cow Line Greedy

给你一个字符串,每次两种操作将字符串重组,字典序最小。 将第一个字符加在新字符串尾部 将最后一个字符加在新串尾部 从前从后比较两个字符串字典序,选择小的第一个字符添加到新串尾部,反复如此。相同时随便选一个。不能够简单比较第一个字符。 Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K

1412

高通开发系列 - System之FOTA/DFOTA包制作和升级

高通开发系列 - System之FOTA/DFOTA包制作和升级

fulinux的博客 4222

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1877

poj 3617

https://vjudge.net/problem/POJ-3617 问题描述 给定长度为N的字符串S,要构造一个长度为N的字符串T,起初T是一个空串,随后反复进行下列任意操作: 1.从S头部删一个字符加到T尾部 2.从S尾部删一个字符加到T尾部 构造出字典序尽量小的T 思路: 贪心。 前面后面比较,取小的字符放到新串前面。如果相同,就两边同时往中间靠,比较下一个字符。...

dibanfu3470的博客 308

lammps 案例:高熵合金FeNiCrCoCu建模及拉伸模拟

高熵合金力学性能模拟包括拉伸、剪切、摩擦等模拟,本文以高熵合金FeNiCrCoCu为例介绍高熵合金建模及拉伸过程模拟。 FeNiCrCoCu原子数量比为1:1:1:1:1 高熵合金的拉伸与单晶拉伸过程类似,主要包含以下步骤: 1.建模 高熵合金含有原子类型较多,建模时,一般以含量最多的原子为主建立初始模型。 使用set type/ratio或者set type/fraction的方式按一定比例替换为其它合金原子。 如随机选择20%的原子1,将其转换为原子2: set type 1 type/ratio 2

lammps_jiayou的博客 6067

【POJ 3617 --- Best Cow Line】

【POJ 2376 --- Cleaning Shifts】 Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cows in a line and he...

来日浅谈的博客 471

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

POJ 3617 Best Cow Line 贪心算法

题目链接:Best Cow Line 贪心策略是:一直从S字串两侧寻找小的字符,特殊情况是:如果两侧字符一样,向内侧比较并获取答案。(不过感觉这步做了很多无用功,尤其是回文串的情况) 代码如下: View on Github #include #include #include #include using namespace std; vector S; bool operat

Kiritow的学园 565

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

POJ3617 Best Cow Line【水题】

Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27635   Accepted: 7438 Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the an

海岛Blog 1970

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

POJ3617 Best Cow Line

题目链接:POJ3617 Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 46695 Accepted: 11881 Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Yea...

cutlery1137的博客 264

poj 3617 Best Cow Line 贪心

poj 3617 Best Cow Line 题目链接: http://poj.org/problem?id=3617 思路: 贪心 第一个字母和最后一个字母比较字典序,果如大小相同,左边指针++,右边指针--,继续比较 最后注意输出格式:每80个字母换一次行 代码: #include <iostream> #include <stdio.h> using n...

ddqb3235的博客 263

【贪心】POJ 3617:Best Cow Line

一、题目内容 POJ 3617 原题地址 二、题意解释 给定一个字符串,重排,每次从头或尾取较小值放到新序列的末尾。 题目要求是每80个为一行输出。 三、代码及注释 #include<cstdio> using namespace std; int n; char S[2001]; int main() { scanf("%d",&n); for(int j=0; j<n; j++) { scanf(" %c",&S[j]);

szy_fasheng的博客 1040

Best Cow Line(POJ 3617)

原题链接:http://poj.org/problem?id=3617 字典序最小问题(贪心算法) 基本思想:不断取S的开头和末尾中较小的一个字符放到T的末尾 难点:开头和末尾的字符相同的情形如何解决 修正算法:按照字典序比较S和S反转后的字符串S’ #include &lt;iostream&gt; #include&lt;cstdio&gt; using namespace std...

种花家的奋斗兔的博客 747

POJ 3617——Best Cow Line(贪心)

链接:http://poj.org/problem?id=3617 题解 #include<iostream> using namespace std; const int MAX_N=2e3+50; int N; //输入字符串的字符个数 int count; //记录字符个数,满足换行要求 char S[MAX_N]; //存放字符串的数组 void solve(...

享受孤独 329

POJ——3617 Best Cow Line

题目链接:http://poj.org/problem?id=3617 题目大意: FJ要参加“年度农场主”这个比赛,每个农场主要把他们的牛排成一条直线,将每头牛名称的首字母合成作为注册名,例如,FJ带了Bessie, Sylvia, 和Dora三头牛,则注册名就叫做BSD。注册名字典序靠...

chiweiluo5790的博客 195

POJ 3617 Best Cow Line

Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges h...

忘梦心的博客 238

Best Cow Line(POJ - 3617)

Best Cow Line POJ - 3617 FJ is about to take hisN(1 ≤N≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cows in a line and herds them past...

the blog of Lee 331

poj 3617 Best Cow Line(贪心)

poj 3617 Best Cow Line (贪心) 题目链接:http://poj.org/problem?id=3617 题目意思:给出一条长度为n的字符串S,目标是要构造一条字典序尽量小,长度为n的字符串T。构造的规则是,如果S的头部的字母 S的尾部的字母,那么将S的尾部的字母加入到T中,删除S的尾部的字母。    这个题目的关键是如何处理 S 的头部的字母(假设用

The_star_is_at的博客 369

POJ 3617 Best Cow Line

Language:Default Best Cow Line Time Limit:1000MS Memory Limit:65536K Total Submissions:37317 Accepted:9665 Description FJ is about to take his...

Y_AOZHEN的博客 281
上一篇: POJ 3069——Saruman's Army
下一篇: 挑战程序设计——迷宫的最短路径
SmallProgramer3121
博客等级 码龄11年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值