- 博客(125)
- 问答 (2)
- 收藏
- 关注
原创 1005. 继续(3n+1)猜想 (25)
考查知识点:散列思路:用HashTable数组记录数字是否被覆盖,对输入的每一个数进行3n+1猜想的操作,对猜想操作过程中产生的每个数x,令HashTable[x]=1,表示被覆盖,将原先数组排序,再作为下标输出未被覆盖的数即可。#include<cstdio>#include<algorithm>using namespace std;bool cmp(int a,int b){ r
2016-08-03 18:07:32
973
原创 1004. 成绩排名 (20)
考查知识点:查找元素思路:利用结构体保存学生的信息,每读入一个学生的信息分别与max和min作比较并更新,最后得到的max,min即为答案。#include<cstdio>struct Student{ char name[15]; char num[15]; int grade;}temp,max,min;int main(){ int n; max.
2016-08-03 17:50:32
2866
2
原创 1004. Counting Leaves (30)-DFS
考查知识点:树的遍历思路:这个题重点在于要体会到用邻接表来存储树,刚开始构建树的时候考虑要怎么一层套一层啊,显然是对邻接表的理解不深刻,构建完树后遍历此树找到叶子节点即可,其中遍历方式可分为dfs和bfs,此种方法为dfs,每次递归时将此时的深度传递下去以便对深度数组的更新。稍后补上bfs版本#include<iostream>#include<cstdio>#include<algorithm
2016-08-03 17:42:16
514
原创 1003. Emergency (25)
考查知识点:最短路径这道题主要是能用代码写出迪杰斯特拉算法来即可秒,暂时看的很懵懂,再碰到题的时候在加深理解吧。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXV = 510; //最大定点数 const int INF = 10000000; //无穷
2016-07-20 20:15:41
409
原创 1002. A+B for Polynomials (25)
考察知识点:简单模拟这道题其实很简单,考虑到将指数作为下标存放系数即可迎刃而解。#include<cstdio>const int max_n=1111;double p[max_n]={};int main(){ int k,n,count=0; double a; scanf("%d",&k); for(int i=0;i<k;i++){
2016-07-18 21:36:36
338
原创 1003. 我要通过!(20)
考查知识点:简单数学思路:注意有规律,p之前A的个数x乘以p与t之间A的个数y等于t之后A的个数z,即x*y=z,即可迎刃而解 。#include<cstdio> #include<cstring>int main(){ int n; scanf("%d",&n); while(n--){ char str[
2016-07-18 19:08:16
4005
1
原创 1001. A+B Format (20)
考察知识点:字符串处理思路:此题看起来非常的简单,实则要仔细考虑输出形式,找到- 1,234 - 12,345 - 123,456 - 1,234,567这种输出规律的特点,刚开始我竟然不知道这种国际惯例是这样输出的,还以为是这样- 123,4 - 123,452333~~ #include<cstdio>#include<cstring>int main(){ int
2016-07-17 21:56:46
456
原创 1002. 写出这个数 (20)
相关知识点:字符串处理思路: (1)用getchar()的形式每读入一个字符就将字符对应的数字进行累加。 (2)通过(1)将累加后的数sum,为了方便将sum从高位到低位输出,用sprinf转换成字符数组。 (3)从高位到低位枚举数组s[],输出每一位对应的字符串。#include<cstdio> int main(){ int sum=0; char ch,s[4];
2016-07-17 19:10:41
6460
2
原创 1001. 害死人不偿命的(3n+1)猜想 (15)
思路:读入题目给出的n,之后用while循环语句反复判断n是否为1: (1)如果n为1,则退出循环。 (2)如果n不为1,则判断n是否为偶数,如果是偶数,则令n除以2;否则令n为(3*n+1)/2。之后令计数器count加1. 这样当退出循环时,count的值就是需要的答案。#include<cstdio>int main(){ int n, count = 0; scanf
2016-07-17 17:50:31
1150
原创 4-12 二叉搜索树的操作集 (30分)
本题要求实现给定二叉搜索树的5种常用操作。 函数接口定义:BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); Position FindMin( BinTree BST )
2016-07-16 00:01:10
5812
原创 4-11 先序输出叶结点 (15分)
本题要求按照先序遍历的顺序输出给定二叉树的叶结点。 函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree Le
2016-07-14 19:56:24
2746
原创 4-10 二分查找 (20分)
本题要求实现二分查找算法。 函数接口定义:Position BinarySearch( List Tbl, ElementType K );其中List结构定义如下:typedef int Position; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Position Last
2016-07-14 19:36:34
3563
原创 4-9 二叉树的遍历 (25分)
本题要求给定二叉树的4种遍历。 函数接口定义:void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); void LevelorderTraversal( BinTree BT );其中BinTree结构定义如下:typed
2016-07-13 22:12:59
12812
1
原创 4-8 求二叉树高度 (20分)
本题要求给定二叉树的高度。 函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree Left; BinTree Right;
2016-07-13 18:22:00
3913
原创 4-7 在一个数组中实现两个堆栈 (20分)
本题要求在一个数组中实现两个堆栈。 函数接口定义:Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ); ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:typedef int Po
2016-07-11 19:12:33
10613
5
原创 POJ-3253 Fence Repair
Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer length
2016-07-02 19:39:51
351
原创 POJ-3069 Saruman's Army
DescriptionSaruman the White must lead his army along a straight path from Isengard to Helm’s Deep. To keep track of his forces, Saruman distributes seeing stones, known as palantirs, among the troop
2016-06-28 17:31:47
287
原创 4-6 带头结点的链式表操作集
本题要求实现带头结点的链式表操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下:typedef struct
2016-06-26 17:30:26
1199
原创 POJ-3617 Best Cow Line
Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual”Farmer of the Year” competition. In this contest every farmer arranges his cows in a line and herds them past the judges.The co
2016-06-25 15:36:32
335
原创 POJ-2386 Lake Counting
Description Due to recent rains, water has pooled in various places in Farmer John’s field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares . Each square contains e
2016-06-23 16:42:07
362
原创 4-5 链式表操作集
本题要求实现链式表的操作集。函数接口定义:Position Find( List L, ElementType X ); List Insert( List L, ElementType X, Position P ); List Delete( List L, Position P ); 其中List结构定义如下:typedef struct LNode *PtrToLNode; stru
2016-06-22 22:11:43
1485
原创 POJ-1852 Ants
An army of ants walk on a horizontal pole of length l. cm, each with a constant speed of 1 cm/s. When a walking ant reaches an end of the pole, it immediatelly falls off it. When two ants meet they tur
2016-06-21 18:02:57
563
原创 4-4 链式表的按序号查找
本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K ); 其中List结构定义如下:typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNo
2016-06-20 20:41:23
5687
原创 4-3 求链式表的表长
本题要求实现一个函数,求链式表的表长。函数接口定义:int Length( List L ); 其中List结构定义如下:typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List; L是给定单链表,函数Len
2016-06-20 17:12:44
5849
原创 4-2 顺序表操作集 (20分)
本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下:typedef int Positio
2016-06-17 16:51:45
14964
4
原创 4-1 单链表逆转 (20分)
本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L ); 其中List结构定义如下:typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef
2016-06-16 17:10:48
11985
1
原创 PAT乙级—1048. 数字加密(20)-native
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。输入格式:输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。输出格式:在一行中输出加密后的结
2016-06-13 16:40:35
2887
原创 PAT乙级—1019. 数字黑洞 (20)-native
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。例如,我们从6767开始,将得到7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532
2016-06-13 15:44:00
470
原创 PAT乙级—1018. 锤子剪刀布 (20)-native
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。输出格式:输出
2016-06-13 15:25:17
1030
原创 PAT乙级—1017. A除以B (20)-native
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入格式:输入在1行中依次给出A和B,中间以1空格分隔。输出格式:在1行中依次输出Q和R,中间以1空格分隔。输入样例: 123456789050987654321 7 输出样例: 17636684150141093474 3//思路:此题在于模拟一个除法竖式的过程
2016-06-13 14:49:45
527
原创 PAT乙级—1016. 部分A+B (15)-native
正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入格式:输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。输出格式:在一行中输出PA + PB的值。输入样例1: 3862767 6
2016-06-13 14:12:47
996
原创 PAT乙级—1014. 福尔摩斯的约会 (20)-native
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母’D’,代表星期四;第2对相同的字符是’E’,那是第5个英文字母,代表一天里的第14个钟头(
2016-06-13 13:52:15
3362
原创 PAT乙级—1013. 数素数 (20)-native
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输入样例: 5 27 输出样例: 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89
2016-06-13 13:29:45
721
原创 PAT乙级—1012. 数字分类 (20)-native
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。 输入格式:每个输入包含1个测试用例。每个测试用例先给出一个
2016-06-13 13:01:49
409
原创 PAT乙级—1011. A+B和C (15)-native
给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。输入格式:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。输入样例: 4 1 2
2016-06-13 12:51:33
717
原创 PAT乙级—1010. 一元多项式求导 (25)-native
设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。输入样例: 3 4 -5 2 6 1 -2 0 输出样例
2016-06-12 17:01:14
694
原创 PAT乙级—1009. 说反话 (20)-native
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例: Hello World Here I Come 输出样例:
2016-06-12 15:57:27
658
原创 PAT乙级—1008. 数组元素循环右移问题 (20)-native
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100)、M(M>=0)
2016-06-12 15:42:02
481
原创 PAT乙级—1007. 素数对猜想 (20)-native
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。输入格式:每个测试输入包含1个测试用例,给出正整数N。输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。输入样例: 20
2016-06-12 15:29:27
1616
空空如也
noj一道冒泡排序,不能通过,求大神解答
2015-05-17
眼睛的颜色 算法题我的代码为什么不能通过???一个岛上有n个人
2015-04-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅