当前位置:网站首页>7-9 one way in, two ways out (25 points)
7-9 one way in, two ways out (25 points)
2022-07-03 14:33:00 【Study hard 867】
Consider a special queue which is a linear structure that allows insertions at one end, yet deletions at both ends. Your job is to check, for a given insertion sequence, if a deletion sequence is possible. For example, if we insert 1, 2, 3, 4, and 5 in order, then it is possible to obtain 1, 3, 2, 5, and 4 as an output, but impossible to obtain 5, 1, 3, 2, and 4.
Input Specification:
Each input file contains one test case. For each case, the first line gives 2 positive integers N and K (≤10), which are the number of insertions and the number of queries, respectively. Then N distinct numbers are given in the next line, as the insertion sequence. Finally K lines follow, each contains N inserted numbers as the deletion sequence to be checked.
All the numbers in a line are separated by spaces.
Output Specification:
For each deletion sequence, print in a line yes
if it is indeed possible to be obtained, or no
otherwise.
Sample Input:
5 4
10 2 3 4 5
10 3 2 5 4
5 10 3 2 4
2 3 10 4 5
3 5 10 4 2
Sample Output:
yes
no
yes
yes
Chinese translation :
Consider a special queue , It's a linear structure , Allow one end to insert , Both ends are deleted . Your job is to check whether a given insertion sequence can delete the sequence . for example , If we insert in order 1、2、3、4 and 5, You can get 1、3、2、5 and 4 As the output , But it is impossible to get 5、1、3、2 and 4.
Enter specifications :
Each input file contains a test case . For each case , The first line gives 2 A positive integer N and K(≤10) , Insert number and query number respectively . Then in the next line N A different number , As an insert sequence . And finally K That's ok , Each row contains N Insert the number as the deletion sequence to be checked .
All numbers in a row are separated by spaces .
Output specifications :
For each deletion sequence , If you can really get , Then print in the line “ yes ”, Otherwise print “ no ”.
Sample input :
First of all, let's understand the meaning of the question , For example 1234 Is the default sequence , Then he gave a 4123 This sequence , So it's according to 4123 Delete the data in the order ,4 There must be before 123,3 There must be before 12........, Then insert only one end , First, 4, Then we insert from one end 1234, Then delete both ends , First, 4, Delete from the right , And then there was 1, Delete from the left , And then there was 2, Delete from the left , And then there was 3 Delete from the right . At the same time, if a number is deleted , Then we don't need to consider this number in the later sequence , For example 2 Deleted , that 3 As long as there is 1 that will do .
From the above example, we first judge a number , What numbers did he have to appear first , Now we need to construct a sequential function , That is, before a certain number appears , Those numbers should appear , meanwhile , We also need an array to mark whether a number has been deleted , It is also necessary to determine whether the numbers at both ends are corresponding ( That is, the number we want to delete ), If not, then NO. According to this, we write the following code :
#include <stdio.h>
int main(){
int i,j;
int k,n,front,flag,m,t,rear;
scanf("%d%d",&n,&k);
int a[n],c[n],b[n],book[n],g,h,l;//c[n] Is to store the current undeleted number ,a[n] It's a sequential array ,b[n] Is the order in which we want to delete numbers .
for(i=0;i<n;i++){
scanf("%d",&a[i]);
book[i]=1;// All data has not been deleted
c[i]=-1;// Prevent random data from being duplicated with the data we want to delete
}
for(i=0;i<k;i++){
front=0;
flag=0;
l=0;
rear=-1;// Adding a data is from 0 The subscript begins , So we let rear yes -1
for(j=0;j<n;j++)book[j]=1;
for(j=0;j<n;j++){
h=0;
scanf("%d",&b[j]);// Enter the data to be added
for(g=0;g<n;g++)if(a[g]==b[j])break;// Find the data in a Position in array , It's convenient to save the data in front of him first
if(l<=g){for(m=0,l=0;l<=g;l++){// If the data to be stored is larger than the previous data , We need to update the array .
if(book[l]==0)continue;// If it has been deleted, it will not be executed
c[h++]=a[l];
front=0;// Because the array is going to 0 Inserted above , So we let the head become 0.
}
rear=h-1;
}
if(c[front]==b[j]){// See whether the header is the data to be deleted
book[g]=0;
front++;// Delete the head , Because there is no deletion in memory , So we need to logically let front++, To achieve logical deletion .
}
else if(c[rear]==b[j]){// See whether the tail is the data to be deleted
book[g]=0;
rear--;
}
else {j++;// Neither is it no
flag=1;
break;
}
}
for(t=j;t<n;t++)scanf("%d",&b[t]);// because break, As a result, some data is not scanf, So here is another loop to accept the data .
if(flag)printf("no\n");
else printf("yes\n");
}
}
The code I wrote just logically deleted the data , But the data is not deleted completely in the memory .
边栏推荐
- 编程语言:类型系统的本质
- 洛谷P5536 【XR-3】核心城市 题解
- Showmebug entered Tencent conference, opening the era of professional technical interview
- puzzle(016.4)多米诺效应
- etcd集群权限管理和账号密码使用
- 中感微冲刺科创板:年营收2.4亿净亏1782万 拟募资6亿
- 556. 下一个更大元素 III
- Sendmail无法发送邮件及发送过慢解决
- 556. 下一个更大元素 III : 简单构造模拟题
- Sub GHz wireless solution Z-Wave 800 Series zg23 SOC and zgm230s modules
猜你喜欢
Tonybot humanoid robot infrared remote control play 0630
[qingniaochangping campus of Peking University] in the Internet industry, which positions are more popular as they get older?
Exercise 6-6 use a function to output an integer in reverse order
必贝特医药冲刺科创板:年营收97万亏损1.37亿 拟募资20亿
NPM install is stuck with various strange errors of node NPY
Protobuf and grpc
Tiantu investment sprint Hong Kong stocks: asset management scale of 24.9 billion, invested in xiaohongshu and Naixue
Puzzle (016.3) is inextricably linked
tonybot 人形机器人 查看端口并对应端口 0701
使用并行可微模拟加速策略学习
随机推荐
洛谷P4047 [JSOI2010]部落划分 题解
NFT new opportunity, multimedia NFT aggregation platform okaleido will be launched soon
fpga阻塞赋值和非阻塞赋值
Luogu p5018 [noip2018 popularization group] symmetric binary tree problem solution
etcd集群权限管理和账号密码使用
Add ZABBIX calculation type itemcalculated items
Common shortcut keys in PCB
中国锂电池电解液行业市场专项调研报告(2022版)
关于敏捷的一些概念
[clean up the extraordinary image of Disk C]
Similarities and differences between Allegro, OrCAD, net alias, port, off page connector and how to select them
LNMP环境mail函数不能发送邮件解决
GRPC的四种数据流以及案例
ZABBIX saves the page blank after adding calculated items
7-23 currency conversion (using array conversion)
NPM install is stuck with various strange errors of node NPY
Exercise 10-8 recursive implementation of sequential output of integers
Accelerating strategy learning using parallel differentiable simulation
Pyqt interface production (login + jump page)
Jiuyi cloud black free encryption free version source code