算法竞赛入门经典
kian240802
I will find my way
展开
-
Uva489 Hangman
"难以想象自己在写这道题时犯了多少错误,都是每一次没有得出正确答案之后硬生生改过来的!!我感觉你的思维真的很不严密!而你每次写完之后就压根没有想过自己测试的问题???还没有提交,记得反思此题!”/*输入一个字符串s,1.猜测一个字符串,每次说出一个字母即可,如果你说的字母不包含在s里且次数超过7次,那么就输了。2.如果你在7次错误以内把s内所含的字符都猜出来了(s中重复的字符只需要猜中一次即可)那么你就赢了。3.如果你猜的字符串既不赢,又没有犯够7次错误,那么给出另外一种结果。 如何原创 2020-11-01 11:51:58 · 195 阅读 · 2 评论 -
Uva11809 Floating-Point Numbers
“觉得这道题挺难的刚刚开始觉得第一步是要想办法把十进制换位二进制,但是毫无头绪…链接:这篇文章要去看看此题需要好好反思下面是来自code paradise的ac代码:#include <stdio.h>#include <string.h>#include <math.h>#define MIN_ERROR 1e-5double A[10][31];long long B[10][31];void buildTable(){ int原创 2020-10-26 09:44:11 · 116 阅读 · 0 评论 -
Uva 1588 Kickdown
“我真的是阅读理解0分。这道题目看了一个多小时还是不明白什么意思。感谢Code Paradise的那位软件工程师…要不然我真的不明白。”大体题意:有两种平面齿轮:在上面的叫做driven gear。在底部的叫做master gear。(后来发现我连齿轮的情况也理解错了,题目意思是牙齿在底部的是master gear。牙齿在顶部的是driven gear…额真的这样???)长度为n的一段含有n个单元。每个单元(每个单元的宽度是一样的!!!)要么高为h要么高为2h。高度为h的凹进去,2h的凸出来。现在有一原创 2020-10-21 10:46:59 · 107 阅读 · 0 评论 -
Uva1587-Box
/*使用结构体排序好六个面判断边相等即可 记得先处理好每个面,保证w>h */#include<stdio.h>#include<algorithm>using namespace std;struct Area{ int w; int h;}area[7];bool cmp(Area a,Area b){ if(a.w != b.w) return a.w > b.w; else return a.h > b.h;}原创 2020-10-19 08:51:20 · 71 阅读 · 0 评论 -
UVa 10340 All in All
“也是提交尚未回应…”/*输入两个字符串,s和t把s中的各个符号依次在t中寻找即可。但要求各字母出现的顺序要一致。*/#include<stdio.h>#include<string.h>int main(){ char s[100]; char t[100]; while(scanf("%s%s",s,t) == 2){ int sign; int slen = strlen(s); int tlen= strlen(t); i原创 2020-10-14 18:28:05 · 72 阅读 · 0 评论 -
UVa202 Repeating Decimals
“提交的代码到现在还没有回复,下面的是我通过了三个测试的代码”//循环小数/*当余数序列出现循环时代表小数循环故用一个数组记录余数序列,(不对,因为要统计cycle长度,所以选择记录每个余数的位置是第几个余数order。如果位置已经有人了) 用另一个数组记录小数序列*/#include<stdio.h>int pos[3000]={0};//余数最大不会超过三千int frament[3000];int main(){ int a,b; while(scanf(原创 2020-10-14 17:37:38 · 72 阅读 · 0 评论 -
Uva1368 - DNA Consensus String
“好像Uva的平台已经不能直接使用了?要在google直接搜索相应题号才可以看题目和提交了”这道题难度不大,思路也比较容易想到。但是我一开始把数组的行下标和列下标颠倒了…花了不少时间。//额哪里有问题!!! //统计每一列中出现最多的字母即可#include<stdio.h>char dna[60][10010];char ch[4] = {'A','C','G','T'};int main(){ int T; int m,n; scanf("%d",&a原创 2020-10-11 09:05:13 · 76 阅读 · 0 评论 -
Uva232 Crossword Answers
/*1.因为输入的两个整数决定了这一次循环要接收的字符数,所以可以通过判断第一个数字是否为0来结束输入。2. 判断是否标记数字。whitesquare的左边或上边若没有whitesquare,则可以标上3.打印时如何判断一个标号是已经打印还是应该要从他打印起? 设置记号法不可取,因为across输出会影响down输入。 Across: 对于某一行,从第一个开始输出,直到遇到边界或者遇到黑格 Down: 如果这个whitesquare的上面不是whitesquare即可要以它为起始原创 2020-10-04 18:55:20 · 789 阅读 · 0 评论 -
UVa227 Puzzle
题型:模拟注意:1.使用getchar接收,注意接收回车符。2.每一个移动操作之后,记得改变空格位置。3.任重而道远。这道题的难度只是easy,但是对于我来说却不那么容易…#include<stdio.h>int main(){ int puzzlecase = 1; int firstcase = 1; char temp, cmd; char puzzle[5][5]; while( (temp=getchar()) != EOF && tem原创 2020-09-23 09:09:32 · 70 阅读 · 0 评论 -
UVa455 periodicStrings
找一个字符串的最小周期。我感觉我自己写的这段代码没有任何问题,但是它居然不承认 ‘a’ == ‘a’!#include<stdio.h>#include<string.h>const int maxn = 100;int main(){ int T; char s[maxn]; scanf("%d",&T); while(T--){ scanf("%s",s); int len = strlen(s); int mask=0;原创 2020-09-15 08:06:21 · 62 阅读 · 0 评论 -
UVa1586计算分子质量
#include<stdio.h>#include<string.h>#include<ctype.h>char element[] = {'C','H','O','N'};double mass[] = {12.01, 1.008, 16.00, 14.01};const int maxn = 100;int main(){ int T; scanf("%d",&T); //char str[maxn]; while(T--){ c原创 2020-09-14 10:53:12 · 85 阅读 · 0 评论 -
用1到9组成3个比例为1:2:3的三位数
要求每个数字恰好使用一次。思路:用一个数组记录每个数字的使用情况。#include<stdio.h>int visit[10] ={0};void breakNum(int n){ int a = n/100; int b = n/10 % 10; int c = n%10; visit[a] = 1; visit[b] = 1; visit[c] = 1;}int main(){ for(int n1=123; n1<333;n1++){ int n2=原创 2020-08-31 08:57:56 · 713 阅读 · 1 评论