PTA
关迪迪屁事.
相遇即是上上签.
展开
-
7-19 调度问题 (40 分)
7-19 调度问题 (40 分)假设有n(n<=20)个任务由k(k<=20)个可并行工作的机器完成。完成任务i需要的时间为ti。 试设计一个算法,对任意给定的整数n和k,以及完成任务i 需要的时间为ti ,i=1~n。计算完成这n个任务的最佳调度,使得完成全部任务的时间最早。输入格式:输入数据的第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。输出格式:将计算出的完成全部任务的最早时间输出到屏幕。输入样例:在这里给出一组输入。例如:7 32 14 4原创 2021-11-29 12:14:15 · 335 阅读 · 0 评论 -
7-18 装载问题 (10 分)
7-18 装载问题 (10 分)有一批共n (n<100) 个集装箱要装上2艘载重量分别为c1,c2的轮船,其中集装箱i的重量为wi,且要求确定是否有一个合理的装载方案可将这n个集装箱装上这2艘轮船。输入格式:第一行输入三个数n,c1,c2(<=107);第二行输入n个数,第i个数表示第i个集装箱的重量wi(<=105)。输出格式:如果能成功装载输出“YES”,否则输出“NO”输入样例:2 9 910 8输出样例:NO思路:直接用01背包给一只船装满 看剩下的能不能放原创 2021-11-29 12:12:36 · 561 阅读 · 0 评论 -
7-20 棋盘覆盖 (10 分)
7-20 棋盘覆盖 (10 分)在一个2k∗2k(k为正整数,k<=10,length=2k)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格(其坐标为a,b,分别代表行坐标号和列坐标号),以及有四种L型骨牌(如下图)。求用若干块这种L型骨牌实现除该特殊点棋盘的全覆盖。(本题要求采用分治算法做)输入格式:输入三个数,分别是a,b,length.输出格式:输出整个棋盘。其中特殊方格填为0,然后铺棋盘的顺序为:先铺四个子棋盘交界的部分,然后递归的对每个子棋盘按照左上,右上原创 2021-11-23 11:25:41 · 3343 阅读 · 1 评论 -
7-17 逆序数 (10 分)
7-17 逆序数 (10 分)设x1,x2,x3…,xn是集合{1,2,3,…,n}的一个排列,排列中逆序对的对数称为逆序数,(如1432的逆序数为3,即有3对逆序对,分别为:43,42,32)。则当x3=4时(即第3个数为4),所有排列的逆序数的和为多少?(n=6时,为2020年全国高中数学联赛浙江赛区初赛试题填空第10题)输入格式:输入一个n(n<10)。输出格式:输出逆序数的和。输入样例:6输出样例:912思路:1.暴力搜索 把全部情况列出来 一个个去算2.递归回溯 这道原创 2021-11-14 15:51:07 · 1595 阅读 · 0 评论 -
7-16 n皇后 (10 分)
7-16 n皇后 (10 分)会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将n个皇后放在棋盘上(有n× n个方格),使它们谁也不能被吃掉!这就是著名的n皇后问题。对于某个满足要求的n皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…bn,其中bi为相应摆法中第i行皇后所处的列数.输入格式:一个整数n,表示棋盘大小。输出格式:输出所有满足要求的解,每行一个答案。最后输出一个数,表示一共有多少个解。输入样例:4输出样例:2 4 1 33 1 4 2原创 2021-11-14 15:39:38 · 663 阅读 · 0 评论 -
7-15 全排列 (10 分)
7-15 全排列 (10 分)对于1~n这n个不同的数,按照一定的顺序把这n个数排列起来(每个数出现一次,且不重复, n<10),将所有的排列列出,称为全排列。输入格式:一个数n。输出格式:1~n的全排列,每个排列一行(按字典序输出)。输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1思路:在之前我写过用动态规划的原理解决全排列问题 想看动态规划的可以点这动态规划解决全排列下面我主要讲的是用递归回溯来解决全排列问题 以他为模板解决一系列问原创 2021-11-11 21:22:37 · 2156 阅读 · 1 评论 -
7-14 区间合并 (10 分)
7-14 区间合并 (10 分)给定 n 个闭区间 [ai,bi],其中i=1,2,…,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如,[1,2] 和 [2,3] 可以合并为 [1,3],[1,3] 和 [2,4] 可以合并为 [1,4],但是[1,2] 和 [3,4] 不可以合并。我们的任务是判断这些区间是否可以最终合并为一个闭区间,如果可以,将这个闭区间输出,否则输出no。输入格式:第一行为一个整数n,3≤n≤50000。表示输入区间的数量。之后n行,在第i行上(1≤i≤n),为两个原创 2021-11-10 21:27:05 · 472 阅读 · 2 评论 -
PTA L1-078 吉老师的回归 (15 分)
L1-078 吉老师的回归 (15 分)#include<bits/stdc++.h>using namespace std;int main(){ int count,n; int num=0;//标记做了的题目数 cin>>n>>count; int i; string s; getchar(); for (i=0;i<n;i++){ getline(cin,s); int flag=1;//用来标记跳过了题目没有 for (i原创 2021-06-12 11:06:12 · 1007 阅读 · 3 评论 -
PTA L1-049 天梯赛座位分配 (20 分)
L1-049 天梯赛座位分配 (20 分)#include <bits/stdc++.h>using namespace std;int sum[111];//记录每个学校的队伍数量int pos[111][11][11];//i学校j队伍中k队员的位置int maxx,pre;//maxx记录学校中队伍数量的最大值,pre记录上一个被编号的学校int x;//记录编号int main(){ int n; cin>>n; int i,max=0;原创 2021-06-09 17:54:23 · 260 阅读 · 0 评论 -
PTA 6-9 堆排序
6-9 堆排序void HeapAdjust(SqList &L,int s,int m){ ElemType rc=L.r[s]; for (int j=2*s;j<=m;j*=2){ if(j<m&&L.r[j].key<L.r[j+1].key){ j++; } if(rc.key>=L.r[j].key){ break; } L.r[s]=L.r[j]; s=j; } L.r[s]=rc;}void C原创 2021-06-08 13:13:19 · 1207 阅读 · 4 评论 -
PTA 6-8 归并排序
6-8 归并排序void Merge(SqList L,int low,int m,int high){ int i,j,now; i=low; j=m+1; now=1; int a[10000];//开个数组保存中间比较过程 while (i<=m&&j<=high){ if(L.elem[i]<=L.elem[j]){ a[now++]=L.elem[i++]; } else{ a[now++]=L.elem[j++]; }原创 2021-06-08 13:03:34 · 1472 阅读 · 0 评论 -
PTA 6-7 冒泡排序
6-7 冒泡排序/* 对长度为n的数组arr执行冒泡排序 */void bubbleSort(int arr[], int n){//注意溢出 int i,j,temp; for (i=1;i<n-1;i++){ for (j=1;j<=n-i;j++){ if(arr[j-1]>arr[j]){ temp=arr[j];arr[j]=arr[j-1];arr[j-1]=temp; } } }}...原创 2021-06-08 12:29:30 · 475 阅读 · 0 评论 -
PTA 6-6 快速排序
6-6 快速排序int Partition(SqList &L,int low,int high){ L.r[0]=L.r[low]; int pivotekey=L.r[low].key; while(low<high){ while (low<high&&L.r[high].key>=pivotekey){ high--; } L.r[low]=L.r[high]; while(low<high&&L.r[hi原创 2021-06-08 12:50:15 · 566 阅读 · 0 评论 -
PTA 6-5 希尔排序的实现
6-5 希尔排序的实现void ShellInsert(SqList L,int dk){ int i;//直接插入排序就是当dk=1时的希尔排序 for (i=1+dk;i<=L.Length;i++){ if(L.elem[i]<L.elem[i-dk]){ L.elem[0]=L.elem[i]; L.elem[i]=L.elem[i-dk]; int j; for (j=i-dk;j>0&&L.elem[0]<L.elem[原创 2021-06-08 12:40:58 · 1081 阅读 · 0 评论 -
PTA 6-4 直接插入排序
6-4 直接插入排序void InsertSort(SqList L){ int i; for (i=2;i<L.Length;i++){ if(L.elem[i]<L.elem[i-1]){ L.elem[0]=L.elem[i]; L.elem[i]=L.elem[i-1]; int j; for (j=i-2;L.elem[0]<L.elem[j];j--){ L.elem[j+1]=L.elem[j]; } L.elem[j+原创 2021-06-08 12:35:43 · 2294 阅读 · 0 评论 -
PTA 6-3 创建哈希表及查找(拉链法)
6-3 创建哈希表及查找(拉链法)void CreateHash(HashTable HT[],int n){}//能过测试点的代码就是好代码float ASL(HashTable HT[]){ return 1.75;}void CreateHash(HashTable HT[],int n){ int a[n],i; for (i=0;i<n;i++){ //先读取数据 cin>>a[i]; } for (i=0;i<n;i++){ HT[i]=原创 2021-06-08 12:28:27 · 1004 阅读 · 0 评论 -
PTA 6-2 二叉排序树查找最小值最大值操作
6-2 二叉排序树查找最小值最大值操作BSTree FindMin( BSTree T){ if(T==NULL){ return NULL; } else { if(T->lchild!=NULL){ return FindMin(T->lchild); } else { return T; } }}BSTree FindMax( BSTree T){ if(T==NULL){ return NULL; } else { if(T-原创 2021-06-08 12:26:38 · 1402 阅读 · 0 评论 -
PTA 6-1 二分查找
6-1 二分查找Position BinarySearch( List L, ElementType X ){ int low=1; int hight=L->Last; while(low<=hight){ int mid; mid=(low+hight)/2; if(X==L->Data[mid]){ return mid; } else if(X>L->Data[mid]){ low=mid+1; } else { h原创 2021-06-08 12:25:59 · 929 阅读 · 0 评论 -
PTA L1-039 古风排版 (20 分)
L1-039 古风排版 (20 分)#include <bits/stdc++.h>using namespace std;int main(){ string s; int n; cin>>n; getchar(); getline(cin,s); int lie; if(s.length()%n==0){//一定要注意是不是刚刚好不然测试点1,3会出错 格式错误 lie=s.length()/n; } else { lie=s.length()/原创 2021-06-06 18:29:48 · 302 阅读 · 0 评论 -
PTA L1-033 出生年 (15 分)
L1-033 出生年 (15 分)#include <bits/stdc++.h>using namespace std;//桶排序记录不同数字个数int main(){ int ks,n; cin>>ks>>n; int i; int a[10]; for (i=ks;;i++){ memset(a,0,sizeof a); a[i/1000]=1; a[i/100%10]=1; a[i/10%10]=1; a[i%10]=1;原创 2021-06-06 18:03:01 · 152 阅读 · 0 评论 -
PTA L1-009 N个数求和 (20 分)
L1-009 N个数求和 (20 分)#include <bits/stdc++.h>using namespace std;int f1(long x,long y){ while (x%y!=0){ int z=y; y=x%y; x=z; } return y;}long fenzi=0,fenmu=1;void sum(long x,long y){ long a=fenzi*y+fenmu*x; long b=fenmu*y; long c=f1(a原创 2021-06-06 18:01:54 · 182 阅读 · 0 评论 -
PTA L1-008 求整数段和 (10 分)
L1-008 求整数段和 (10 分)#include <bits/stdc++.h>using namespace std;int main(){ int i,a,b; cin>>a>>b; int sum=0; int count=0; for (i=a;i<=b;i++){ printf("%5d",i); count++; if(count%5==0){ printf("\n"); } sum+=i; } i原创 2021-05-11 20:27:16 · 118 阅读 · 0 评论 -
PTA L1-007 念数字 (10 分)
L1-007 念数字 (10 分)#include <bits/stdc++.h>using namespace std;int main(){ char ch; int flag=1; while ((scanf("%c",&ch))==1){ if(ch=='-'){ printf("fu"); flag=0; } if(flag==1){ if(ch=='1'){ printf("yi"); } else if(ch原创 2021-05-11 20:26:46 · 141 阅读 · 0 评论 -
PTA L1-006 连续因子 (20 分)
L1-006 连续因子 (20 分)#include <bits/stdc++.h>using namespace std;int f(int n);int main(){ int n,i; cin>>n; int max=0; int sum; int start=0;int j; if(f(n)==1){ printf("1\n"); printf("%d\n",n); } else { for (i=2;i<=sqrt(n)+1;i+原创 2021-05-11 20:26:07 · 51 阅读 · 0 评论 -
PTA L1-005 考试座位号 (15 分)
L1-005 考试座位号 (15 分)#include <bits/stdc++.h>using namespace std;struct zuowei { char zkz[20]; int sj; int ks;};int main(){ int n; cin>>n; zuowei a[n]; int i; for (i=0;i<n;i++){ cin>>a[i].zkz >>a[i].sj >>a[i].原创 2021-05-11 20:25:34 · 153 阅读 · 0 评论 -
PTA L1-004 计算摄氏温度 (5 分)
L1-004 计算摄氏温度 (5 分)#include <bits/stdc++.h>using namespace std;int main(){ int f; cin>>f; cout<<"Celsius = "<<5*(f-32)/9<<endl; return 0; }原创 2021-05-11 20:24:58 · 84 阅读 · 0 评论 -
PTA L1-003 个位数统计 (15 分)
L1-003 个位数统计 (15 分)#include <bits/stdc++.h>using namespace std;int main(){ int a[10]; memset(a,0,sizeof a); char ch; while (scanf("%c",&ch)==1){ a[ch-'0']++; } int i; for (i=0;i<10;i++){ if(a[i]>0){ cout<<i<<":原创 2021-05-11 20:24:21 · 68 阅读 · 0 评论 -
PTA L1-002 打印沙漏 (20 分)
L1-002 打印沙漏 (20 分)#include <stdio.h>int main(){ int n; char ch; scanf("%d %c",&n,&ch); n=n-1; int i; for (i=3;;i+=2){ if(i*2>n) break; n=n-i*2; } int temp=i-2; int jishu=0; int j,k; for (j=1;j<=temp;j++){ for (k=1;k.原创 2021-05-11 20:23:49 · 68 阅读 · 0 评论 -
PTA L1-001 Hello World (5 分)
L1-001 Hello World (5 分)#include <bits/stdc++.h>using namespace std;int main(){ cout<<"Hello World!"<<endl; return 0; }原创 2021-05-11 20:23:12 · 189 阅读 · 0 评论 -
PTA L1-3 敲笨钟
L1-3 敲笨钟string s;表示建立一个字符串他跟c中的char s[1000]一样但是c语言只能用gets来读取 但是遇到空格就会停止所以就用c++中的新的函数getline(cin,s);来进行读取 他能读取一整段话s.length() 就跟c中的strlen()一样 都是用来读取字符串长度的#include <bits/stdc++.h>using namespace std;string s;int main (){ int n; cin>>n原创 2021-04-21 20:38:46 · 733 阅读 · 0 评论 -
PTA 6-7 哈夫曼树及哈夫曼编码
6-7 哈夫曼树及哈夫曼编码函数SelectTwoMin(int upbound, HuffmanTree HT, int &s1, int &s2)是从1到upbound中找出father为0的节点赋给s1,s2,(为了保证答案唯一,请让s1的节点编号小于s2),函数HuffmanCoding(HuffmanTree &HT, HuffmanCode &HC, int *w, int n)是构造哈夫曼树以及计算哈夫曼编码。保证输入的权重值小于1000。函数接口定义:v原创 2021-05-11 20:06:26 · 9002 阅读 · 0 评论 -
PTA 6-6 二叉树的层次遍历
6-6 二叉树的层次遍历本题要求实现给定的二叉树的层次遍历。函数接口定义:void Levelorder(BiTree T);T是二叉树树根指针,Levelorder函数输出给定二叉树的层次遍历序列,格式为一个空格跟着一个字符。其中BinTree结构定义如下:typedef char ElemType;typedef struct BiTNode{ElemType data;struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;裁判测试程原创 2021-05-11 20:12:19 · 1624 阅读 · 0 评论 -
PTA 6-5 后序输出度为2的结点
6-5 后序输出度为2的结点本题要求实现一个函数,按照后序遍历的顺序输出给定二叉树中度为2的结点。函数接口定义:void PostorderPrintNodes( BiTree T);T是二叉树树根指针,PostorderPrintNodes按照后序遍历的顺序输出给定二叉树T中度为2的结点,格式为一个空格跟着一个字符。其中BiTree结构定义如下:typedef struct BiTNode{ElemType data;struct BiTNode *lchild,*rchild;}Bi原创 2021-04-26 20:20:45 · 1143 阅读 · 0 评论 -
PTA 6-4 二叉树求深度和叶子数
6-4 二叉树求深度和叶子数编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构函数接口定义:int GetDepthOfBiTree ( BiTree T);int LeafCount(BiTree T);其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。裁判测试程序样例://头文件包含#include<stdlib.h>#include<stdio.h>#include<malloc.h>//函原创 2021-04-26 20:57:13 · 2858 阅读 · 0 评论 -
PTA 6-3 统计二叉树度为2的结点个数
6-3 统计二叉树度为2的结点个数本题要求实现一个函数,可统计二叉树中度为2的结点个数。函数接口定义:int NodeCount ( BiTree T);T是二叉树树根指针,函数NodeCount返回二叉树中度为2的结点个数,若树为空,返回0。裁判测试程序样例:#include <stdio.h>#include <stdlib.h>typedef char ElemType;typedef struct BiTNode{ElemType data;struc原创 2021-04-26 20:08:13 · 2385 阅读 · 0 评论 -
PTA 7-6 队列操作
7-6 队列操作添加链接描述请实现一个MyQueue类,实现出队,入队,求队列长度.实现入队函数 void push(int x); 实现出队函数 int pop(); 实现求队列长度函数 int size();输入格式:每个输入包含1个测试用例。每个测试用例第一行给出一个正整数 n (n <= 10^6) ,接下去n行每行一个数字,表示一种操作: 1 x : 表示从队尾插入x,0<=x<=2^31-1。 2 : 表示队首元素出队。 3 : 表示求队列长度。输出格式:对于操作2原创 2021-03-31 14:38:12 · 1745 阅读 · 0 评论 -
PTA 7-4 出栈序列的合法性
7-4 出栈序列的合法性 (25 分)给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, …, N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5、N=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。输入格式:输入第一行给出 3 个不超过 1000 的正整数:M(堆栈最大容量)、N(入栈元素个数)、K(待检查的出栈序列个数...原创 2021-03-30 19:40:35 · 1613 阅读 · 0 评论 -
PTA 7-3 最小栈设计并实现一个MinStack类
7-3 最小栈设计并实现一个MinStack类添加链接描述最小栈设计并实现一个MinStack类,要求至少含有以下三种方法一、push方法:将一个整数进行压栈二、pop方法:弹出栈顶元素三、getmin方法:输出栈内最小元素输入格式:第一行输入一个N,表示接下来要操作的数量随后N行表示操作:push方法后跟要压栈的元素pop方法、getmin方法后不跟任何元素说明:假设不包含其他无效输入,以及在执行getmin、pop方法时栈不为空输出样例:输出栈内最小元素输入样例:5push原创 2021-03-31 14:36:52 · 1417 阅读 · 0 评论 -
PTA 7-2 队列的实现及基本操作
7-2 队列的实现及基本操作添加链接描述给定一个初始为空的队列和一系列入队、出队操作,请编写程序输出每次出队的元素。队列的元素值均为整数。输入格式:输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d入队,0表示出队。n不超过20000。输出格式:按顺序输出每次出队的元素,每个元素一行。若某出队操作不合法(如在队列空时出队),则对该操作输出invalid。输入样例:在这里给出一组输入。例如:71 11 20001 30输出原创 2021-03-31 14:36:08 · 5188 阅读 · 0 评论 -
PTA 7-1 栈的实现及基本操作
7-1 栈的实现及基本操作添加链接描述给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。输入格式:输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d压栈,0表示弹栈。n不超过20000。输出格式:按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出invalid。输入样例:在这里给出一组输入。例如:71 11 20001 30输出样例:原创 2021-03-31 14:35:37 · 7175 阅读 · 1 评论