算法竞赛入门经典 第二版
9677
这个作者很懒,什么都没留下…
展开
-
分子量 Molar Mass
给出一种物质的得分子式(不带括号), 求分子量。本题中的分子式只包含4种原子,分别为C,H,O,N,原子的量分别为12.01,1.008,16.00,14.01。例如,C6H5OH的分子的量为94.108。初步分析肯定要用循环以及if判断然后用字符数组,存储原子,浮点数组存储原子的量,根据最后计算的公式,需要统计每个原子的数量,则需要整数数组。而且**Sample Input4CC6H5OHNH2CH2COOHC12H22O11Sample Output12.01094.1087原创 2020-10-03 12:59:07 · 1208 阅读 · 0 评论 -
得分(Score,ACM/ICPC Seoul 2005,UVa1585)
给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0。例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3.输入样例5OOXXOXXOOOOOXXOOXXOOOXOXOXOXOXOXOXOOOOOOOOOOOOOOXOOOOXOOOOX输出样例10975530#include<iostream>using namespace std;#include<string.h>int原创 2020-09-24 00:22:40 · 375 阅读 · 0 评论 -
统计字符串中1的个数
下面的程序意图在于统计字符串中字符1的个数,可惜有瑕疵#include<stdio.h>#define maxn 10000000+10int main(){ char s[maxn]; scanf("%s",s); int tot=0; for(int i=0;i<strlen(s);i++) if(s[i]==1)tot++; printf("%d\n",tot);}修正过后#include<stdio.h原创 2020-09-20 17:13:41 · 2354 阅读 · 1 评论 -
必要的存储量---是否一定要数组
1输入一些数,统计个数,不用数组#include<iostream>#include<string.h>int main(){int num=0;int data;while(scanf("%d",&data)==1){ num++;} printf("%d\n",num);return 0;} 按下ctrl Z结束输入2. 输入一些数,求最大值,最小值,平均值不用数组#include<iostream>#include<原创 2020-09-20 17:05:30 · 257 阅读 · 2 评论 -
环状序列
环状序列问题描述长度为n的环状串有n种表示法,分别为某个位置开始顺时针得到。CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等。在这些表示法中,字典序最小的称为“最小表示”。输入一个长度为n(n<=100)的环状DNA串(只包含A、C、G、T这4种字符)的一种表示法,你的任务是输出该环状串的最小表示。例如,CTCC的最小表示是CCCT,CGAGTCAGCT的最小表示为AGCTCGAGTC。样例输入:2CGAGTCAGCTCTCC样例输出:AGCTCGAGTCCCCT描原创 2020-09-20 10:46:10 · 391 阅读 · 0 评论 -
生成元
描述如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1小于等于n小于等于100000),求最小生成元。无解输出0.例如,n=216,121,2005时的解分别为198,0,1979.分析本题看起来是个数学题,但是不然。假设求生成元为m。不难发现m<n.换句话说只要枚举所有的m<n,看看有没有哪个数是n的生成元。但是这样效率不高,因为每次计算一个n的生成元都需要枚举n-1个数。有没有更加快的方法?只需要一次性枚举100000内的所有正整数m,标记“m加上m各个数字之和得到的数原创 2020-09-20 10:11:39 · 4176 阅读 · 1 评论 -
猜数字游戏的提示
题目来自刘汝佳编著的《算法竞赛入门经典(第二版)》题目描述:样例输入:41 3 5 51 1 2 34 3 3 56 5 5 16 1 3 51 3 5 50 0 0 0101 2 2 2 4 5 6 6 6 91 2 3 4 5 6 7 8 9 11 1 2 2 3 3 4 4 5 50 0 0 0 0 0 0 0 0 00样例输出:Game 1:(1,1)(2,0)(1,2)(1,2)(4,0)Game 2:(2,4)(3,2)#include&l原创 2020-09-20 09:31:39 · 261 阅读 · 0 评论 -
回文词 算法竞赛
输入一个字符串,判断它是否为回文以及镜像串。输入字符串保证不含数字0.所谓回文串,就是反转之后原串相同,如abba和madam。所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE。注意,并不是每个字符在镜像之后都能得到一个合法字符,本题中,每个字符的镜像如下图所示,(空白项表示该字符镜像后不能得到一个合法的字符)。在这里插入图片描述输入的每行包含一个字符串(保证只有上述字符。不含空白字符),判断它是否为回文串和镜像串(共四种组合)。每组数据之后输出一个空行 。样例输入:NOTAPALINDRO原创 2020-09-19 11:27:30 · 183 阅读 · 0 评论 -
WERTYU
#include<iostream>#include<string.h>using namespace std; char s[]="`1234567890-=qwertyuiop[]\\ASDFGHJKL;'ZXCVBNM,./";int main() {int i,c;while(c=getchar()!=EOF){for(i=1;s[i]&&s[i]!=c;i++);if(s[i])putchar(s[i-1]);else putchar(c原创 2020-09-19 11:04:38 · 622 阅读 · 0 评论 -
TeX中的引号
#include<iostream>#include<string.h>using namespace std; int main() {int c,q=1;while ((c=getchar())!=EOF){//边读边处理if(c=='"'){printf("%s",q?"``":"''");q=!q;} else putchar(c);} return 0;}scanf()在本题并不适用,不能读入空格之类的字符。getchar()函数可以将获取原创 2020-09-18 10:55:55 · 119 阅读 · 2 评论 -
竖式问题
#include<iostream>#include<string.h>using namespace std;//三位数与两位数每位的乘积所得结果还有最终结果以及三位数,两位数,的每一个字符都要进行检验。 int main() { int count=0;//n方阵的大小 ,x,y代表数组的横纵坐标,flag代表 char s[20],buf[99]; scanf("%s", s); for(int abc=111;abc<=999;abc++) for(原创 2020-09-18 08:44:34 · 96 阅读 · 0 评论 -
蛇形填数
#include<iostream>#include<string.h>using namespace std;#define max 20//需要用到二维数组int a[max][max];int main() { int n, x=0, y=0, tot;//n方阵的大小 ,x,y代表数组的横纵坐标,flag代表蛇形填数里的数字 scanf("%d", &n); memset(a, 0, sizeof(a));//先给数组的每个元素置零 x=0;y原创 2020-09-17 17:51:42 · 183 阅读 · 1 评论 -
算法竞赛,第三章,开灯问题
开灯问题描述有 n 盏灯,编号为 1~n,第 1 个人把所有灯打开,第 2 个人按下所有编号为 2 的倍数的开关(这些灯将被关掉),第 3 个人按下所有编号为 3 的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有 k 个人,问最后有哪些灯开着?输入:n 和 k,输出开着的灯编号。k≤n≤1000输入输入一组数据:n 和 k输出输出开着的灯编号样例输入7 3样例输出1 5 6 7...原创 2020-09-17 15:29:27 · 685 阅读 · 0 评论 -
如何不用for循环输入数组元素,可以不用事先确定要输入的元素的个数。以逆序输出数组元素为例。
#include<stdio.h>#define maxsize 105int a[maxsize];int main(){ int x,n=0; while(scanf("%d",&x)==1) { a[n]=x; n++; } for(int i=n-1;i>=0;i--) printf("%d\n",a[i]); return 0;} 此处的scanf只要scanf不异常,相当于while(1),但是它等待输入。因为正常情况下scanf原创 2020-09-11 14:11:27 · 2057 阅读 · 1 评论 -
如何用命令行运行可执行程序.exe
也有可以在命令行编译运行程序的,得找到自己的编译器位置然后配置,如果想弄的可以百度这里主要是介绍如何运行可执行程序在windows 系统中,开始菜单右键,点击运行,输入cmd(请务必采用这种方式打开命令行)出现这种界面,>是命令提示符,将命令以及所要执行的命令的程序的位置写好,回车。好处:如果你需要看程序运行时间,可是手动输入的时间也会记录在内,因此,让windows自动输入更准确下面是代码示例和运行结果#include<iostream>#include<time.原创 2020-08-15 06:46:46 · 8662 阅读 · 0 评论 -
求程序运行时间的函数clock()以及 CLOCKS_PER_SEC与CLK_TCK的区别,用法
最近学习算法和数据结构涉及到一个时间问题要看程序运行所需的时间。所以要用clock()函数time.h的头文件但是这个函数,单位不是s,咱的时间是s所以要除以个CLOCKS_PER_SEC这个表示一秒钟内CPU运行的时钟周期数(时钟计时单元)百度百科是这么说的这两个有什么区别最新VS2019的说法我们用的时候只需要,会用就行下面是是例子:#include<iostream>#include<time.h> using namespace std;原创 2020-08-14 17:02:12 · 5550 阅读 · 0 评论 -
算法竞赛入门经典第二版 第一章习题答案
1-1 输入三个整数,输出他们的平均值,保留三位小数。#include<stdio.h> using namespace std;int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); double d=a+b+c; printf("%.3lf\n",d/3); return 0;}1-2 输入华氏温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9#include<s原创 2020-08-10 09:16:37 · 504 阅读 · 0 评论