
算法
一个想要吃软饭的小白
不想吃软饭的程序员不是好的程序员
展开
-
蓝桥杯练习——大等于n的最小完全平方数
传送门问题描述输出大等于n的最小的完全平方数。 若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数 Tips:注意数据范围 输入格式 一个整数n输出格式 大等于n的最小的完全平方数 样例输入71711样例输出71824数据规模和约定:n是32位有符号整数看到这一题第一想法就是用循环来做,从n开始一直判断,直到找到符合条件的数为止。提交之后果不其然...原创 2019-12-06 17:57:44 · 1482 阅读 · 1 评论 -
统计难题 HDU-1251(C++)
原oj网址点击打开链接vj网址点击打开链接Problem DescriptionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单...原创 2019-08-03 08:20:46 · 380 阅读 · 0 评论 -
KMP算法中求next数组的方法
kmp算法中next数组的求法:这篇文章写的是next数组的图解,可以结合图解有助于理解下面的算法#include<stdio.h>#include<string.h>int l,next[100];char p[100];void get_next_arr(){ int i=1,j=0; next[0]=-1; next[1]=0; while...原创 2019-07-30 23:01:50 · 177 阅读 · 1 评论 -
亲和串 HDU-2203
vj做题链接hdu做题链接人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大了却不知道怎么去判断亲和串了,于是他只好又再一次来请教聪明且乐于助人的你来解决这个问题。亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 ...原创 2019-07-31 08:54:40 · 160 阅读 · 1 评论 -
反正切函数的应用 POJ-1731
做题链接这一题是数学问题,需要数学演算题目如下:演算过程有很多字母,一一打下来有点麻烦,我就写在纸上了,如下图:AC Code#include<stdio.h>typedef long long ll;int main(){ ll a,b,c,m,n,i; scanf("%lld",&a); for(n=a;n>0;n--){ m=(a...原创 2019-08-03 20:46:19 · 218 阅读 · 0 评论 -
Ananagrams UVA-156
vj做题链接输入:输入将由一系列行组成。每行不超过80个字符,但可以包含任意数量的单词。单词最多由20个大写字母和/或小写字母组成,不会断行。空格可以自由地出现在单词周围,并且至少一个空格分隔同一行的多个单词。注意,包含相同字母但大小写不同的单词被认为是彼此的字谜,因此tIeD和EdiT都是字谜。该文件将由一个“#”组成的行终止。输出:输出将由一系列行组成。每一行将由一个单词组成,该单词是...原创 2019-08-27 11:18:25 · 181 阅读 · 0 评论 -
语法检查-括号匹配 HRBUST-1170
做题链接AC Code#include<stdio.h>#include<string.h>#include<stdlib.h>char s[100][100],s1[9999],s2[9999];int main(){ int i,j,k,n,m; while(gets(s[0])){//每次样例的第一行输入 i=1; k=j=0...原创 2019-09-06 00:00:32 · 211 阅读 · 0 评论 -
UVA-465 Overflow
vj做题网址这道题的意思是给出两个大于0的正整数,做加法或乘法运算。若第一个数字超过int范围则输出first number too big;若第二个数字超过int范围则输出second number too big;若结果超出int范围则输出result too big;我在别人的题解上看到有人用atof函数写的,我在写这一题时不知道这个函数的用法,所以用的一般的方法写的。AC Co...原创 2019-09-10 00:20:04 · 197 阅读 · 0 评论 -
八皇后及n皇后问题(C语言)
八皇后问题的描述大致意思是在8*8的棋盘上摆放8个皇后,让其刚开始无法直接相互攻击,由八皇后问题可以推出n皇后因为皇后是每一行只放一个,所以不考虑横向攻击,只考虑纵向及对角线上的攻击具体步骤请看代码#include<stdio.h>#include<string.h>int a[15],tot,n;//从0行0列开始void search(int cur){...原创 2019-09-16 23:53:10 · 702 阅读 · 0 评论 -
简单计算器HDU-1237(堆和栈的问题)
做题链接读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。Sample Input1 + 24 + 2 * 5...原创 2019-08-02 23:21:11 · 249 阅读 · 0 评论 -
Perfect Pth Powers POJ-1730
做题链接We say that x is a perfect square if, for some integer b, x = b 2. Similarly, x is a perfect cube if, for some integer b, x = b 3. More generally, x is a perfect pth power if, for some integer b,...原创 2019-08-02 22:42:25 · 195 阅读 · 0 评论 -
Prime Ring Problem HDU-1016
做题链接Problem DescriptionA ring is compose of n circles as shown in diagram. Put natural number 1, 2, …, n into each circle separately, and the sum of numbers in two adjacent circles should be a prim...原创 2019-07-24 23:41:32 · 216 阅读 · 0 评论 -
象棋盘上的最短路径问题(C语言)
问题 H: 残缺的棋盘在国际象棋里,王是最重要的一个棋子。每一步,王可以往上下左右或者对角线方向移动一步,如下图所示。给定两个格子 A(r1,c1), B(r2,c2),你的任务是计算出一个王从 A 到 B 至少需要走多少步。为了避免题目太简单,我们从棋盘里拿掉了一个格子 C(r3,c3)(ABC 保证互不相同),要求王从 A走到 B 的过程中不能进入格子 C。在本题中,各行从上到下编号...原创 2019-04-26 16:25:45 · 2724 阅读 · 0 评论 -
函数fgets()的用法(C语言)
虽然用 gets() 时有空格也可以直接输入,但是 gets() 有一个非常大的缺陷,即它不检查预留存储区是否能够容纳实际输入的数据,换句话说,如果输入的字符数目大于数组的长度,gets 无法检测到这个问题,就会发生内存越界,所以编程时建议使用 fgets()。fgets() 的原型为:# include <stdio.h>char *fgets(char *s, int s...转载 2019-05-22 23:39:33 · 467 阅读 · 0 评论 -
A strange lift HDU-1548(BFS) C/C++
奇怪的电梯hdu oj做题地址这一题的大致意思是:有N层楼,每一层楼的电梯都有一个数字ki,表示在这一层坐电梯只能上升或下降的层数,例如:如果在三楼有一个数字2,表示你只能上升到五楼或下降到一楼;但如果这栋楼只有四层,那么此时就只能下降到一楼。同理,如果下降的层数超出范围同样也不可行。让输出到达目标楼层最少的步数。这一提示一道有向图。可以用数组来模拟,#include<stdio...原创 2019-07-23 19:23:12 · 176 阅读 · 0 评论 -
Catch That Cow HDU-2717(BFS)
抓住那只牛HDU oj做题地址这道题的大致意思是,给出人和牛的位置n和k,人一次移动到n-1或n+1或2*n的位置,求最少的移动次数;由于n和k的范围在100000以内,所以不能用数组模拟宽度优先搜索,只能使用STL队列queue进行模拟#include<queue>#include<string.h>#include<iostream>usi...原创 2019-07-24 00:04:00 · 151 阅读 · 0 评论 -
Ignatius and the Princess IV
Ignatius and the Princess IVhttps://vjudge.net/problem/HDU-1029“OK, you are not too bad, em… But you can never pass the next test.” feng5166 says.“I will tell you an odd number N, and then N intege...原创 2019-07-20 15:10:19 · 94 阅读 · 0 评论 -
大数A+B(C语言)
#include<stdio.h>#include<string.h>char s1[200],s2[200],s3[206];void reverse(char s[]){ //反转字符串,模拟手算过程 int l=strlen(s); for(int i=0;i<l/2;i++){ char t=s[i]; s[i]=s[l-i-1]; ...原创 2019-07-29 19:52:54 · 1033 阅读 · 0 评论 -
{A} + {B}
http://acm.hdu.edu.cn/showproblem.php?pid=1412Problem Description给你两个集合,要求{A} + {B}.注:同一个集合中不会有两个相同的元素.Input每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范...原创 2019-07-20 15:34:22 · 210 阅读 · 0 评论 -
胜利大逃亡 HDU-1253(BFS)
做题链接Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计...原创 2019-07-24 23:20:32 · 154 阅读 · 0 评论 -
大数相乘(C语言)
大数相乘的过程就是模拟人们手算的过程,其就是用一个数的每一位去乘另一个数的每一位,再将其相加并进位。#include<stdio.h>#include<string.h>char s1[200],s2[200],s3[400];int num[400];void reverse(char s[]) //翻转字符串 { int i,l; char t;...原创 2019-04-16 18:55:03 · 501 阅读 · 0 评论