刷题
刷刷刷~~~
imxietx
这个作者很懒,什么都没留下…
展开
-
字符串循环右移
编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefg” 函数头是这样的: //pStr是指向以'\0'结尾的字符串的指针 //steps是要求移动的nvoid LoopMove(char * pStr, int steps){ //请填充...}答案:#include <stdio.h>#原创 2017-03-05 18:34:34 · 1239 阅读 · 0 评论 -
《算法竞赛入门经典》第三章思考题
题目1(必要的存储量)数组可以用来保存很多数据,但在一些情况下,并不需要把数据保存下来。下面哪些题目可以不借助数组,哪些必须借助数组?请编程实现。假设输入只能读一遍。 1. 输入一些数,统计个数。 2. 输入一些数,求最大值、最小值和平均数。 3. 输入一些数,哪两个数最接近。 4. 输入一些数,求第二大的值。 5. 输入一些数,求它们的方差。 6. 输入一些数,统计不超过平均数的个数。原创 2017-01-31 00:12:30 · 4121 阅读 · 8 评论 -
C语言 竖式问题 模拟竖式
竖式问题。找出所有形如 abc∗deabc*de (三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。样例输入:2357样例输出:<1>..775X..原创 2017-01-28 15:21:22 · 7184 阅读 · 1 评论 -
C语言 蛇形填数
蛇形填数。在n×n方阵里填入1,2,…,n×n,要求填成蛇形。例如,n=4时方阵为:10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4解决此题的一个重要原则就是先判断下一个要填的位置是否满足条件,再填数。不是发现了不能填再退回来。代码如下:#include <stdio.h>#include <string.h>#define MAXN 100int ma原创 2017-01-27 13:55:25 · 3901 阅读 · 1 评论 -
C语言 开灯问题
开灯问题。有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。k≤n≤1000。样例输入: 7 3样例输出: 1 5 6 7代码如下:#include <stdio.h>#define MA原创 2017-01-27 13:52:21 · 5260 阅读 · 1 评论 -
C语言 分数化小数
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤10 6 ,c≤100。输入包含多组数据, 结束标记为a=b=c=0。样例输入:1 6 40 0 0样例输出:Case 1: 0.1667这道题靠计算机本身来做除法是会出现精度问题的,所以要模拟数学上的除法:#include <stdio.h>int main(){ int a, b, c, ct = 1; w原创 2017-01-27 13:50:09 · 12359 阅读 · 7 评论 -
水仙花数
输出100~999中的所有水仙花数。若3位数 ABCABC 满足 ABC=A3+B3+C3ABC=A^3 +B^3 +C^3 ,则称其为水仙花数。例如 153=13+53+33153=1^3 +5^3 +3^3 ,所以153是水仙花数。代码如下:#include <stdio.h>int main(){ int i; for(i = 100; i < 1000; ++i)原创 2017-01-27 13:45:26 · 857 阅读 · 0 评论 -
C语言 3n+1问题
猜想: 对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1。例如,3→10→5→16→8→4→2→1。输入n,输出变换的次数。n≤109。样例输入: 3 样例输出: 7这道题很简单,只需要一个while循环即可解决:#include <stdio.h>int main(){ int n, count = 0;原创 2017-01-27 13:42:06 · 6578 阅读 · 1 评论 -
C语言 7744问题
题目:输出所有形如 aabb 的四位完全平方数(前两位数字相等、后两位数字相等)。方法1:想到开平方会有精度问题,索性就不开方了。于是可以对每个形如 aabb 的数 nn 来判断是否存在整数 xx,使得 x2=nx2=n,然后得到了如下代码:#include <stdio.h>int isSquared(int num);int main(){ int a, b; for(a =原创 2017-01-27 13:34:30 · 1219 阅读 · 1 评论 -
Hailstone Sequence
无聊来个小科普。Hailstone Sequence问题是一个著名的数学问题,至今没有证明其正确性,也没证明其是错误的,即任何一个正整数N,如果是偶数的话就除以2,如果是奇数的话就乘以3再加上1,最后这个数都会变为1。公式如下:求出这个序列长度的C++代码如下:#include using namespace std;int hailstone(int n);int mai原创 2016-03-26 22:46:45 · 4202 阅读 · 1 评论 -
Uva 1587:Box
题目传送门:https://cn.vjudge.net/problem/UVA-1587#include <stdio.h>struct p{ int w, h;}ps[6], cps[3];bool isSame(int i, int j){ return (ps[i].w == ps[j].w && ps[i].h == ps[j].h) || (ps[i]原创 2017-04-18 23:12:38 · 1161 阅读 · 0 评论 -
UVa 10340:All in All(字符串)
题目传送门:https://cn.vjudge.net/problem/UVA-10340 简单的字符串题目AC code:#include <iostream>#include <string>using namespace std;int main(){ string s, t; while (cin >> s >> t) { unsigned int i原创 2017-04-18 16:07:37 · 1502 阅读 · 0 评论 -
UVa 213:Message Decoding
题目传送门:https://cn.vjudge.net/problem/UVA-2130, 00, 01, 10, 000, 001, 010, 011, 100, 101, 110, 0000, 0001, … , 1011, 1110, 00000, … 输入头对应的字符存储在 codes[len][value] 数组中(表示长度为len且编码为value的字符),例如: codes[1][0原创 2017-04-11 18:28:14 · 811 阅读 · 0 评论 -
Uva 133:The Dole Queue
题目传送门:Uva 133:The Dole Queue#include <stdio.h>int n, k, m;int a[25];int go(int position, int direction, int step){ int ct = 0; while (true) { while (true) { i原创 2017-04-09 15:55:09 · 625 阅读 · 0 评论 -
UVa 489:Hangman Judge
题目传送门:UVa 489:Hangman Judge#include <stdio.h>#include <string.h>char ans[100], gus[100];int left, chance; // left剩余未被猜出的字符数,错误chance次就会输bool win, lose;void guess(char ch){ bool right = false;原创 2017-04-09 13:49:57 · 905 阅读 · 0 评论 -
Uva 1339:Ancient Cipher
题目传送门:Uva 1339:Ancient Cipher题目大意:第二个字符串的每个字母和另一个字母一一映射之后,再重新排列能否得到地一个字符串。思路:一一映射和重排只是改变了字母的值和位置,但是没有改变字母种类的数量,所以只需统计两个字符串中每种字母出现的次数,然后对出现次数进行排序,然后比较排序后的两个数组即可。例如: HAHB MEMC 从ROME到MAMA,字母种类还是只有三种,每种原创 2017-04-08 19:20:08 · 614 阅读 · 0 评论 -
UVa 11809:Floating-Point Numbers
题目传送门:UVa 11809:Floating-Point Numbers这道题弄了几个小时才AC。首先观察下题目的输入输出:InputThe input file contains around 300 line of input. Each line contains a floating-point number F that denotes the maximum value that c原创 2017-04-08 16:59:10 · 1021 阅读 · 0 评论 -
UVa 1588:Kickdown
题目传送门:UVa 1588:Kickdown两个字符串,滑动匹配:#include <stdio.h>#include <string.h>#define MAXLEN 105int getMaxLength(char master[], int lenM, char driven[], int lenD){ int i = 0, j = 0, matchPos = 0; // ma原创 2017-04-08 13:51:26 · 906 阅读 · 0 评论 -
UVa 202:Repeating Decimals
题目传送门(Virtual Judge):UVa 202:Repeating Decimals这道题看起来比较复杂,需要在纸上好好举几个例子:例子1: 1/7 = 0.(1428571)式子商余数1/701 10/71330/74220/72660/78440/75550/771 10/71330/742原创 2017-04-06 23:38:43 · 738 阅读 · 0 评论 -
UVa 1368:DNA Consensus String
简单的但是工作量比较大的模拟题,把程序拆分成几个部分更好。源代码如下。另外还发现一个问题,去UVA提交C代码的时候,要把中文注释删掉,不然OJ判编译错误,UvaOJ用的C90标准。#include <stdio.h>#include <string.h>#define MaxLines 55#define MaxLength 1005#define numBases 4 // 碱基数量为4原创 2017-03-26 15:11:39 · 793 阅读 · 0 评论 -
UVa 232:Crossword Answers
#include int main(){ char puzzle[12][12]; int r, c, i, ct = 0; while(1 == scanf("%d", &r) && r && 1 == scanf("%d", &c)) { while(getchar() != '\n'); for(i = 0; i < r;原创 2017-02-09 14:11:52 · 564 阅读 · 0 评论 -
UVa 227:Puzzle
#include <stdio.h>void swap(char* a, char* b){ char t = *a; *a = *b; *b = t;}int main(){ char puzzle[5][6], ch; char* e = "This puzzle has no final configuration."; int ct =原创 2017-02-01 14:10:53 · 558 阅读 · 0 评论 -
UVa 1225:Digit Counting
#include <stdio.h>#include <memory.h>int main(){ int t, nums[15]; scanf("%d", &t); while(t--) { memset(nums, 0, sizeof(nums)); int n, i; scanf("%d", &n);原创 2017-01-31 20:24:58 · 494 阅读 · 0 评论 -
UVa 455:Periodic Strings
#include <stdio.h>#include <string.h>#include <memory.h>int main(){ char s[85]; int t, i, j; scanf("%d", &t); while(t--) { scanf("%s", s); int len = strlen(s);原创 2017-01-31 20:23:02 · 775 阅读 · 0 评论 -
UVa 1585:Score
#include <stdio.h>#include <memory.h>int main(){ int t, nums[15]; scanf("%d", &t); while(t--) { memset(nums, 0, sizeof(nums)); int n, i; scanf("%d", &n);原创 2017-01-31 18:35:05 · 527 阅读 · 0 评论 -
UVa 1586:Molar mass
#include <stdio.h>#include <ctype.h>int main(){ double w[80] = {0}; w['C'] = 12.01; w['H'] = 1.008; w['O'] = 16.00; w['N'] = 14.01; char s[85]; int T, i; scanf("%d", &T); whi原创 2017-01-31 16:58:58 · 538 阅读 · 0 评论 -
UVa 1584:Circular Sequence
字典序,水题。#include <stdio.h>#include <string.h>#define MAXLEN 105char seq[MAXLEN];int lessThan(int p1, int p2, int len){ int i = 0; while(i < len) { if(seq[(p1+i)%len] != seq[(p2+i原创 2017-01-30 21:41:33 · 616 阅读 · 0 评论 -
UVa 1583:Digit Generator
解题思路:打表#include <stdio.h>#define MAXN 100005int main(){ int ans[MAXN] = {0}; int i; for(i = 1; i < 100000; ++i) { int digitSum = i, t = i; while(t) {原创 2017-01-30 20:22:14 · 535 阅读 · 0 评论 -
UVa 340:Master-Mind Hints
解题思路:首先统计位置正确的数量A,再统计正确答案和猜测中的相同数字的对数X(不用管位置),则 B=X−AB=X-A 例如: 答案为 1233553 猜测为 1133356 则有1-1、3-3、3-3、5-5、3-3五组可以配对,所以X=5,而位置正确的数量A=4,所以B=X-A=1代码如下:#include <stdio.h>#define MAXN 1005int main(){原创 2017-01-30 19:08:51 · 793 阅读 · 0 评论 -
UVa 401:Palindromes
#include <stdio.h>#include <string.h>#include <ctype.h>char* rev = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";char* ans[] = {"not a palindrome.", "a regular palindrome.", "a mirrored string.", "a mirrore原创 2017-01-28 23:02:17 · 637 阅读 · 0 评论 -
UVa 10082:WERTYU
#include <stdio.h>#include <string.h>int main(){ char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./"; char c; int len = strlen(s); while((c = getchar()) != EOF) {原创 2017-01-28 17:22:01 · 525 阅读 · 0 评论 -
UVa 272:TEX Quotes
#include <stdio.h>int main(){ char c; int q = 1; while((c = getchar()) != EOF) { if('"' == c) { printf("%s", q ? "``" : "''"); q = !q; }原创 2017-01-28 17:20:29 · 688 阅读 · 0 评论 -
LeetCode 500: Keyboard Row
水题,hash表。/** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */char** findWords(char** words, int wordsSize, int* returnSize) { *原创 2017-03-23 16:32:33 · 613 阅读 · 0 评论 -
LeetCode 237: Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, t原创 2016-09-21 16:14:46 · 487 阅读 · 0 评论 -
LeetCode 136: Invert Binary Tree
Invert a binary tree. 4 / \ 2 7 / \ / \1 3 6 9to 4 / \ 7 2 / \ / \9 6 3 1题目中的这句话亮了:Google: 90% of our engineers use the software you wrote (Homebrew), but原创 2016-09-20 10:34:25 · 410 阅读 · 0 评论 -
LeetCode 136: Single Number
Given an array of integers, every element appears twice except for one. Find that single one.此题和389题如出一辙: 如果存在相同的数,异或一定会为0,剩下的就是那个单数int singleNumber(int* nums, int numsSize) { int i, single = 0;原创 2016-09-20 09:29:25 · 472 阅读 · 0 评论 -
LeetCode 389: Find the Difference 题解
Given two strings s and t which consist of only lowercase letters.String t is generated by random shuffling string s and then add one more letter at a random position.Find the letter that was adde原创 2016-09-20 08:44:09 · 860 阅读 · 0 评论 -
LeetCode 104: Maximum Depth of Binary Tree 题解
这道题非常简单:LeetCode 104: Maximum Depth of Binary Tree Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the fart原创 2016-08-19 22:26:03 · 726 阅读 · 0 评论 -
LeetCode 258: Add Digits 题解
刚开始以为是一道水题,一下就过了,结果题没看完,要求时间复杂度为O(1)O(1)。LeetCode 258: Add Digits Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.For example:Given num = 38, the pr原创 2016-08-18 21:03:33 · 867 阅读 · 0 评论 -
LeetCode 371: Sum of Two Integers 题解
原题如下:LeetCode 371: Sum of Two Integers Problem: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Example: Given a = 1 and b = 2, return 3. 题的意思是计原创 2016-08-17 11:48:11 · 963 阅读 · 0 评论