![](https://img-blog.csdnimg.cn/20190828073249852.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法竞赛入门经典
JAVA/C++
始终保持对代码的那份单纯的热爱,保持对技术的专注和钻研.
展开
-
刘汝佳第一版算法竞赛入门经典-第二章循环结构程序设计
习题2-1位数(digit) //输入一个不超过10^9的正整数,输出它的位数。例如12735的位数是5. #include<iostream> usingnamespacestd; intmain() { intn,i=0; cin>>n; for(;n>0;) {...原创 2019-02-22 10:07:46 · 308 阅读 · 0 评论 -
最大乘积(Maximum Product,Uva 11059)
原题摘录输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列.如果这个最大的乘积不是正数,输出0.(1<=n<=18,-10<=Si<=10).样例输入32 4 -352 5 -1 2 -1样例输出820分析连续子序列有两个要素:起点和终点,因此只需枚举起点和终点即可.由于每个元素的绝对值不超过10,且不超过18个元素,最...原创 2019-08-14 20:41:54 · 492 阅读 · 0 评论 -
木块问题(The Blocks Problem,Uva 101)
原题摘录输入n,得到编号为0~n-1的木块,分别摆放在顺序排列编号为0~n-1的位置。现对这些木块进行操作,操作分为四种。1、move a onto b:把木块a、b上的木块放回各自的原位,再把a放到b上;2、move a over b:把a上的木块放回各自的原位,再把a发到含b的堆上;3、pile a onto b:把b上的木块放回各自的原位,再把a连同a上的木块移到b上;4...原创 2019-08-14 18:56:11 · 942 阅读 · 1 评论 -
除法(Division,UVa 725)
原题描述:输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a-j恰好为数字0-9的一个排列(可以有前导0),2<=n<=79.样例输入:62样例输出:79546 / 01283 = 6294736 / 01528 = 62分析:不用枚举0-9的所有排列,只需枚举其中一个,已知的是除法的结果,相乘或相除即可得到另一个....原创 2019-08-01 17:46:48 · 724 阅读 · 0 评论 -
追踪电子表格中的单元格(Spreadsheet Tracking ACM/ICPC World Finals1997,UVa512)
解决本题最直接的思路是:先模拟增删交换操作,算出最后电子表格的状态,然后执行每次查询.这种方法不仅效率低而且不容易理解另一种思路,直接追踪要查询的单元格,不用关心整个单元格的变化.详细注释完整代码:#include <cstdio>#include <cstring>#include <cmath>#include <cctype>...原创 2019-07-28 10:51:04 · 327 阅读 · 0 评论 -
谜题 (Puzzle, ACM/ICPC World Finals 1993, UVa227)-移动之美
从编程角度,个人认为移动的实质就是点与点之间连续的位置交换所形成的假象.原题摘录:谜题 (Puzzle, ACM/ICPC World Finals 1993, UVa227)有一个5*5的网格,其中恰好有一个格子是空的,其他格子各有一个字母。一共有4种指令:A, B, L, R,分别表示把空格上、下、左、右的相邻字母移到空格中。输入初始网格和指令序列(以数字0结束),输出指令执行完...原创 2019-07-12 19:25:49 · 360 阅读 · 0 评论 -
Map查重-循环小数
原题摘录:循环小数(Repeating Decimals,ACM/ICPC World Finals 1990,UVa202)输入整数a[0,3000]和b[1,3000],输出a/b的循环小数以及其循环节长度.例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21.本题实际上是模拟长除法的计算过程,其中每一次除法时都有被除数和余数,...原创 2019-07-11 22:52:52 · 632 阅读 · 0 评论 -
信息解码(Message Decoding,ACM/ICPC World Finals1991,UVa 213)-getchar()巧妙处理二进制串
关于本篇请先看:关于getchar()的基本知识及理解见:https://blog.csdn.net/a22222259/article/details/95999502原题摘录:对于下面这个字符串:0,00,01,10,000,001,010,011…….首先是长度为1的串,然后是长度为2的串,以此类推。不存在全为1的串。你的任务是编写一个程序。首先输入一个代码头(例如AB#TAN...原创 2019-07-15 22:40:38 · 221 阅读 · 0 评论 -
循环跳出实现可控-周期串
周期串(Periodic Strings,UVa456)如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。样例输入:HoHoHo样例输出:2-------------------------------------------------...原创 2019-07-10 19:25:38 · 156 阅读 · 0 评论 -
纵横字谜的答案(Crossword Answers,ACM/ICPC World Finals 1994,UVa232)-位置的移动处理
原题摘录:输入输出规范见文章最后.解释分析:1.建立坐标和向量的结构方便进行位置的移动处理.2.通过向量的计算来读取所有单词,简化代码的复杂度,向量加法自定义,p=p+dRight,left=p+dLeft等;3.Point向量eigible存放所有单词的起始点坐标int向量across,down存放横向单词和纵向单词的起始点坐标对应的编号4.内联函数:为了解决频繁...原创 2019-07-14 20:51:28 · 434 阅读 · 0 评论 -
从编程角度看抽象之美-刽子手游戏
今天做了一个编程竞赛题目,可能我自己的层次有点低(看官不要嘲笑,哈哈)觉得它很好的体现了具体问题抽象为编程语言的过程.-------------------------------------------------------------------------------------------------------------------------------------------...原创 2019-07-10 14:14:04 · 331 阅读 · 0 评论 -
分子量-记录状态的变量的精彩妙用
原题摘录-分子量(Molar Mass,ACM/ICPC seoul 2007,UVa1586)给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包括4种原子,分别为C,H,N,O,原子量为12.01,1.008,14.01,16.00.例如C6H5OH的分子量为6*12.01+5*1.008+1*16.00+1.008=94.108详解#include <stdio....原创 2019-07-09 20:45:09 · 209 阅读 · 0 评论 -
子序列(All in All,UVa10340)-比对中的循环之美
题目概述:输入两个字符串s,t.判断是否可以从t中删除0个或多个字符(其它字符顺序不变),得到字符串s.例如,abcde可以得到bce,而不能得到dc.分析:两个字符串之间进行比对,肯定用到循环.下图模拟了整个对比过程,看完之后再编码想必已经很清晰了.可见外层循环也就是i的终止条件为字符串s的长度.而且是两个字符串都必须递增,任何一个都不能回头(题意).内层循环取决于对...原创 2019-07-12 22:16:09 · 293 阅读 · 0 评论 -
刘汝佳第二版算法竞赛入门经典-第三章数组和字符串习题答案(完整版)
习题共有12个,第一个题为得分(Score,ACM/ICPC Seoul 2005,UVa1585)3-1#include <stdio.h>#include <string.h>#define maxn 80+1int main(int argc, char** argv){ char buf[maxn]; scanf("%s",buf); int...原创 2019-07-14 19:35:08 · 646 阅读 · 0 评论 -
刘汝佳第一版算法竞赛入门经典-第三章数组和字符串-下
习题3-5旋转 输入一个n*n的字符矩阵,向左旋转90度输出. #include <stdio.h> int main() { int N; int i, j; printf("请输入N\n"); scanf("%d",&N); printf("请输入N*N矩阵\n"); char m[N][N]; ...原创 2019-02-24 20:51:53 · 301 阅读 · 0 评论 -
刘汝佳第一版算法竞赛入门经典-第三章数组和字符串-上
习题3-1 分数统计 输入一些学生的分数,那个分数出现的次数最多?如果有多个并列,从小到大输出. #include<stdio.h> #include <string.h> int main() { int a[10],b[10],count[10]; int max; memset(count,0,sizeof(count)); ...原创 2019-02-22 17:29:18 · 297 阅读 · 0 评论 -
分数拆分(Fractions Again,Uva 10976)
原题摘录输入正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y.样例输入输出见文章最后.题目分析枚举对象为找出所有对应的x,y.那么问题在于没有终止条件无休无止的穷举下去肯定不是办法.注意审题可知:x,y,k均为正整数,x>=y则1/x<=1/y则1/k-1/y<=1/y故y<=2k.至此我们就可以根据y计算出x1....原创 2019-08-15 18:13:39 · 325 阅读 · 0 评论