九度Online Judge题解
文章平均质量分 76
九度Online Judge是一个专注于计算机专业考研的上机练习网站,共有400多题,主要为各名校历年的考研机试真题。
本专栏为笔者在九度OJ上做题时的所有题解,已经做出90%以上的题目,并且全部为原创,代码贴在这里与其他人分享。
梁山伯liangrx06
热爱学习研究算法
展开
-
九度OJ 1551-1557(4/7)
1551#include <stdio.h>#include <stdlib.h>#include <math.h>#define PI (asin(1.0)*2)int main(void){ double R,r; while(scanf("%lf%lf",&R,&r)!=EOF) { if(r>1) r=1/r;原创 2016-03-08 23:07:34 · 843 阅读 · 0 评论 -
九度OJ 1541-1550(7/10)
1541(未完成)1542(未完成)1543#include <stdio.h>#include <limits.h>typedef unsigned long long ULL;int getb(ULL n, int i){ n >>= i; return n%2;}ULL setb(ULL n, int i, ULL k){ k <<= i; n |= k原创 2016-03-08 23:03:57 · 570 阅读 · 0 评论 -
九度OJ 1531-1540(7/10)
1531#include <stdio.h>#include <stdlib.h>#define N 100int cmp(const void *a, const void *b){ return *(int *)a - *(int *)b;}int main(void){ int n, i; int a[N], sum[N]; while (scanf("%原创 2016-03-08 23:00:29 · 636 阅读 · 0 评论 -
九度OJ 1521-1530(10/10)
1521#include <stdio.h>#define N 1000void printMirror(int a[N+1][3], int i){ if (i == 0) return ; if (i != 1) printf(" "); printf("%d", a[i][0]); printMirror(a, a[i][2])原创 2016-03-08 22:56:44 · 461 阅读 · 0 评论 -
九度OJ 1511-1520(10/10)
1511#include <stdio.h>#include <stdlib.h>struct node { int key; struct node *next;};struct node *insert(struct node *head, int key){ if (head == NULL) { head = (struct node *原创 2016-03-08 22:21:41 · 576 阅读 · 0 评论 -
九度OJ 1501-1510(10/10)
1501#include <stdio.h>#define LEN 100000int N;double data[LEN];double max[LEN];double min[LEN];double Max(double a, double b){ return (a > b) ? a : b;}double Min(double a, double b){ return原创 2016-03-08 22:17:14 · 519 阅读 · 0 评论 -
九度OJ 1491-1500(5/10)
1491(未完成)1492#include <stdio.h>#define M 100#define N 10int main(void){ int n, m, i, j, k, r; int a[M][M]; int sum, min; while (scanf("%d%d", &m, &n) != EOF) { for(i=0; i<m原创 2016-03-08 22:13:03 · 557 阅读 · 0 评论 -
九度OJ 1481-1490(7/10)
1481(未完成)1482//错误在于漏掉了初始状态的检查#include <stdio.h>#include <stdlib.h>#include <string.h>#include <limits.h>#define N 13#define M 1594323 // pow(3, 13)typedef struct node { int a[N]; int d;}原创 2016-03-08 22:04:15 · 606 阅读 · 0 评论 -
九度OJ 1471-1480(10/10)
1471#include <stdio.h>#include <string.h>#define N 100int main(void){ int n1, n2, i, j, k; char s1[N+1], s2[N+1], s[2*N+1]; while (scanf("%s%s", s1, s2) != EOF) { n1 = strlen(s原创 2016-03-08 21:59:00 · 733 阅读 · 0 评论 -
九度OJ 1461-1470(9/9)
1461#include <iostream>#include <cstdio>using namespace std;#define N 7 int n, m, t;char map[N][N+1];bool legal(int x, int y){ return 0 <= x && x < n && 0 <= y && y < m;}bool dfs(int x, int y,原创 2016-03-08 21:48:28 · 473 阅读 · 0 评论 -
九度OJ 1451-1460(10/10)
1451#include <stdio.h>int main(){ int i, j, n; long long f[21]; while(scanf("%d", &n) != EOF) { f[0] = 1; f[1] = 0; for (i=2; i<=n; i++) { f原创 2016-03-08 21:43:49 · 473 阅读 · 0 评论 -
九度OJ 1441-1450(9/10)
1441#include <stdio.h>#define N 1000int main(void){ int i; int a, b; while (scanf("%d%d", &a, &b) != EOF) { if (a==0 && b==0) break; a = a%1000; int r原创 2016-03-08 21:35:36 · 495 阅读 · 0 评论 -
九度OJ 1431-1440(10/10)
1431#include <stdio.h>#include <stdlib.h>#define N 1000000int cmp(const void *a, const void *b){ return *(int *)b - *(int *)a;}int main(){ int i, n, m; int a[N]; while(scanf("%d%d",原创 2016-03-08 21:29:39 · 899 阅读 · 0 评论 -
九度OJ 1417-1430(4/14)
1417代码#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 100#define M 10000#define LEN 101typedef struct node { int x; int y; int d;} ROAD;int n;int pre[N+1];int count原创 2016-03-08 21:09:00 · 384 阅读 · 0 评论 -
九度OJ 1412(卡特兰数) 1413(未完成) 1414(未完成) 1415(循环队列) 1416(排序)
1412:毕业合影题意大魏要求学弟学妹们拍的时候站成两排,右边的比左边的要高,还要后面的比前面的那个人高一些。 请你帮他算算,如果有n个人来拍,按照大魏要求的方式排,会有多少种不同的方式呢。思路一开始没啥思路,后来看了别人的题解才发现是卡特兰数。。。 卡特兰数真的无处不在。代码#include <stdio.h>#define N 40int main(void){ int n, i;原创 2016-03-03 17:29:18 · 869 阅读 · 0 评论 -
九度OJ 1407(线段树) 1408(DP) 1409(DP) 1410(DP) 1411(最短路)
1407:快速找出最小数题意给定一个大小为N 的整数数组array,我们定义两种操作: 1) Add(L, R, W)。即将子数组[L, R]中的元素,都累加一个整数W。 2) Min(L, R)。即返回子数组[L, R]之中,最小的一个元素的值。 其中L和R为数组的下标,且从0开始计数。当数组下标L > R时,我们认为这个子数组的元素包含array[L], array原创 2016-02-29 19:57:05 · 765 阅读 · 0 评论 -
九度OJ 1402(计数) 1403(模拟) 1404(未完成) 1405(未完成) 1406(最短路)
1402:特殊的数题意现在有n个数,其中有一些出现了一次,一些出现了两次,一些出现了很多次。现在要求你找出那些只出现一次的数,并按升序输出。思路由于每个数字的大小范围[1, 1000000],可以开一个这样大的数组统计每个数的出现此处即可。代码#include <stdio.h>#include <string.h>#define N 1000000int main(void){ int原创 2016-02-29 19:42:12 · 771 阅读 · 0 评论 -
九度OJ 1396(DP) 1397(尺取法) 1398(最值) 1399(背包,DP) 1401(未完成)
1396:最少零的路径题意一个由非负整数构成的N * N大小的矩阵,你需要按照如下的规则找到一条访问路径: 1、起点为该矩阵的最左上角元素 2、终点为该矩阵的最右下角元素 3、在遍历过程中,只允许从当前的单元移动到与之相邻的右侧单元或者下方单元最后,当我们按照如上三个规则获取路径之后,我们会将所访问到的单元中的数字相乘,同时希望得到的乘积末尾所含有的连续0的个数最原创 2016-02-28 22:59:58 · 838 阅读 · 0 评论 -
九度OJ 1391(递归) 1392(排序) 1393(归并) 1394(查找) 1395(贪心法)
1391:顺时针打印矩阵http://ac.jobdu.com/problem.php?pid=1391题意输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路实则为数组递归,注意原创 2016-01-03 17:57:44 · 704 阅读 · 0 评论 -
九度OJ 1386(最值) 1387(递归) 1388(递归) 1389(递归) 1390(递归)
1386:旋转数组的最小数字http://ac.jobdu.com/problem.php?pid=1386题意把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。思路这个题不就是求数组最小值吗?跟旋转有什么关系?代码#include <stdio.h>#define N 1000000int main(){ int原创 2016-01-03 17:46:45 · 468 阅读 · 0 评论 -
九度OJ 1376(最近零子序列、DP) 1377(序列、贪心) 1380(位运算) 1384(二分法查找) 1385(二叉树遍历)
1376:最近零子序列http://ac.jobdu.com/problem.php?pid=1376题意给定一个整数序列,求其最接近0的连续子串和。思路DP类题目,注意考虑正数负数两种情况,略复杂一些。代码#include <stdio.h>#include <stdlib.h>#include <math.h>#define N 100000struct st { int s;原创 2016-01-03 11:59:49 · 695 阅读 · 0 评论 -
九度OJ 1371(排序) 1372(DP) 1373(统计) 1374(统计) 1375(统计)
1371:最小的K个数http://ac.jobdu.com/problem.php?pid=1371题意输入n个整数,找出其中最小的K个数。思路排序然后输出。代码#include<stdio.h>#include<algorithm>#define N 200005using namespace std;int main(){ int n,k; int i原创 2016-01-03 11:44:05 · 605 阅读 · 0 评论 -
九度OJ 1366(栈操作) 1367(二叉树遍历) 1368(二叉树路径) 1369(字符串全排列) 1370(特殊数字查找)
1366:栈的压入、弹出序列http://ac.jobdu.com/problem.php?pid=1366题意输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。思路根据两个数组的值,还原栈的压入弹出过程,如果能够完全还原则答案为YES。代码#include <stdio.h>#define N 100000int stack[N], top;void init()原创 2016-01-03 00:23:34 · 726 阅读 · 0 评论 -
九度OJ 1361(反转) 1362(循环移位) 1363(判断) 1364(01背包) 1365(BFS)
1361:翻转单词顺序http://ac.jobdu.com/problem.php?pid=1361题意将一行英文句子按单词反转。思路二维字符串存储,反转外围即可。代码#include <stdio.h>#include <string.h>#define M 50000int main(void){ int n, i, j, m, k; char s[M+1]; whi原创 2016-01-03 00:12:14 · 695 阅读 · 0 评论 -
九度OJ 1360:乐透之猜数游戏 (递归)
时间限制:2 秒内存限制:32 兆特殊判题:否提交:955解决:261题目描述:六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工。为了增添一点趣味性,他还准备了一些不同类型的骰子,打算以掷骰子猜数字的方式发放奖品。例如,有的骰子有6个点数(点数分别为1~6),有的骰子有7个(点数分别为1~7),还有一些是8个点数(点数原创 2015-12-08 23:25:13 · 648 阅读 · 0 评论 -
九度OJ 1359:大魏树遍历 (树)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:299解决:29题目描述:大魏是JOBDU技术组里最喜欢折腾的一个了,单反、骑车、改九度页面,当然还有YY prado。我们姑且先把这些看做是会享受生活的表现;但是有一点我们就不能忍了,他连遍历树都有一些不一样的要求:1. 对于给定的一棵树,他要求从根节点开始遍历完所有节点,相对原创 2015-12-06 12:48:46 · 1194 阅读 · 2 评论 -
九度OJ 1358:陈博的平均主义 (遍历、递归)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:354解决:191题目描述:在JOBDU团队里,陈博是最讲平均主义的人了,但并不是像梁山好汉那样能够做到有钱同花,有肉同吃,毕竟,他还是被家里的领导管着的……陈博的平均主义,就只能体现在他对数字的喜好了。陈博特别喜欢一类“平均数”,“平均数”的具体定义为:对于一个数字,当其以十进制形式表示时原创 2015-12-06 12:44:17 · 548 阅读 · 0 评论 -
九度OJ 1357:疯狂地Jobdu序列 (数字特性)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:715解决:263题目描述:阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度……在等题目的时候,阳仔又不敢出去打篮球,所以只能在纸上乱涂乱写,这天,阳仔在纸上写下了这样的序列:1 2 2 3 3 3 4 4 4 4 5 5 5 5 5原创 2015-12-06 12:39:14 · 562 阅读 · 0 评论 -
九度OJ 1356:孩子们的游戏(圆圈中最后剩下的数) (约瑟夫环)
时间限制:10 秒内存限制:32 兆特殊判题:否提交:1333解决:483题目描述:每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小原创 2015-12-04 11:13:10 · 591 阅读 · 0 评论 -
九度OJ 1355:扑克牌顺子 (模拟)
时间限制:2 秒内存限制:32 兆特殊判题:否提交:1676解决:484题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh原创 2015-12-04 11:10:00 · 524 阅读 · 0 评论 -
九度OJ 1354:和为S的连续正数序列 (整除)
时间限制:2 秒内存限制:32 兆特殊判题:否提交:2028解决:630题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在原创 2015-12-01 17:20:34 · 415 阅读 · 0 评论 -
九度OJ 1352:和为S的两个数字 (查找)
时间限制:2 秒内存限制:32 兆特殊判题:否提交:3160解决:833题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输入:每个测试案例包括两行:第一行包含一个整数n和k,n表示数组中的元素个数,k表示两数之和。其中1 第二行包含n个整数,原创 2015-12-01 16:51:57 · 411 阅读 · 0 评论 -
九度OJ 1351:数组中只出现一次的数字 (位运算)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:3098解决:906题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。输入:每个测试案例包括两行:第一行包含一个整数n,表示数组大小。2第二行包含n个整数,表示数组元素,元素均为int。输出:对应每个测试案例,输出数原创 2015-12-01 16:50:12 · 444 阅读 · 0 评论 -
九度OJ 1350:二叉树的深度 (二叉树)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:1044解决:614题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。输入:第一行输入有n,n表示结点数,结点号从1到n。根结点为1。 n 接下来有n行,每行有两个个整型a和b,表示第i个节点的左右孩子孩子。a为左孩子,原创 2015-11-30 19:47:02 · 663 阅读 · 0 评论 -
九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:2489解决:742题目描述:统计一个数字在排序数组中出现的次数。输入:每个测试案例包括两行:第一行有1个整数n,表示数组的大小。1第二行有n个整数,表示数组元素,每个元素均为int。第三行有1个整数m,表示接下来有m次查询。1下面有m行,每行有一个整数k,表示要查询的数。输出:原创 2015-11-30 19:46:13 · 541 阅读 · 0 评论 -
九度OJ 1348:数组中的逆序对 (排序、归并排序)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:2777解决:656题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。输入:每个测试案例包括两行:第一行包含一个整数n,表示数组中的元素个数。其中1 第二行包含n个整数,每个数组均为int类型。原创 2015-11-30 19:37:32 · 522 阅读 · 0 评论 -
九度OJ 1347:孤岛连通工程 (最小生成树)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:1522解决:314题目描述:现在有孤岛n个,孤岛从1开始标序一直到n,有道路m条(道路是双向的,如果有多条道路连通岛屿i,j则选择最短的那条),请你求出能够让所有孤岛都连通的最小道路总长度。输入:数据有多组输入。每组第一行输入n(1接着m行,每行输入一条道路i原创 2015-11-30 19:31:15 · 565 阅读 · 0 评论 -
九度OJ 1346:会员积分排序 (排序)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:967解决:413题目描述:元旦佳节快到了,超市A想要给会员一些奖品。但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序的规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。现在某超市有每个会员的ID(ID保证不重复)、积分,它想原创 2015-11-30 19:29:40 · 560 阅读 · 0 评论 -
九度OJ 1345:XXX定律之画X (递归)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:361解决:157题目描述:给你一个n,然后让你输出F(n)规则是这样的,F(n)的输出结果是:F(n-1) F(n-1) F(n-1)F(n-1) F(n-1)F(1)的输出结果是:X那么根据规则F(2)的输出结果应该是:X X原创 2015-11-23 10:37:52 · 492 阅读 · 0 评论 -
九度OJ 1344:可乐瓶展览 (DP)
时间限制:1 秒内存限制:32 兆特殊判题:否提交:430解决:76题目描述:众所周知JOBDU旗下的JOBCOLA公司是文明全球的著名可乐制造商,与其它可乐公司不同的是,JOBCOLA可乐公司并不是以其可乐的味道闻名,而是以其不同寻常的包装瓶被消费者所津津乐道。在JOBCOLA可乐公司成立100周年的日子里,公司搜集了历年来生产的可乐瓶,想通过原创 2015-11-17 18:38:04 · 679 阅读 · 0 评论