当前位置:网站首页>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
yesChinese 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 .
边栏推荐
- 洛谷P3065 [USACO12DEC]First! G 题解
- Bibit pharmaceutical rushed to the scientific innovation board: annual revenue of 970000, loss of 137million, proposed to raise 2billion
- 愉悦资本新双币基金近40亿元完成首次关账
- 7-24 reduction of the simplest fraction (rolling Division)
- Some concepts about agile
- Concat and concat_ Ws() differences and groups_ Use of concat() and repeat() functions
- Recent learning summary
- Get permissions dynamically
- tonybot 人形机器人 红外遥控玩法 0630
- Sub GHz wireless solution Z-Wave 800 Series zg23 SOC and zgm230s modules
猜你喜欢

7-18 finding the single root of polynomial by dichotomy

Understand the application scenario and implementation mechanism of differential segment

Tonybot humanoid robot infrared remote control play 0630

Tonybot humanoid robot checks the port and corresponds to port 0701
![Luogu p4047 [jsoi2010] tribal division solution](/img/7f/3fab3e94abef3da1f5652db35361df.png)
Luogu p4047 [jsoi2010] tribal division solution

Frequently asked questions: PHP LDAP_ add(): Add: Undefined attribute type in

剑指 Offer 28. 对称的二叉树

MySQL multi table query subquery

Bibit pharmaceutical rushed to the scientific innovation board: annual revenue of 970000, loss of 137million, proposed to raise 2billion

Sub-GHz无线解决方案Z-Wave 800 系列ZG23 soc和ZGM230S模块
随机推荐
Solr series of full-text search engines - basic principles of full-text search
556. 下一个更大元素 III
7-22 tortoise and rabbit race (result oriented)
Comprehensive evaluation of good-looking, easy-to-use and powerful handwriting note taking software: notability, goodnotes, marginnote, handwriting, notes writers, collanote, collanote, prodrafts, not
556. The next larger element III
剑指 Offer 28. 对称的二叉树
Sub-GHz无线解决方案Z-Wave 800 系列ZG23 soc和ZGM230S模块
J-luggage lock of ICPC Shenyang station in 2021 regional games (simple code)
Detailed explanation of four modes of distributed transaction (Seata)
Why is this error reported when modifying records in the database
Table of mathematical constants by q779
Statistical capital consonants
【7.3】146. LRU缓存机制
[clean up the extraordinary image of Disk C]
Concat and concat_ Ws() differences and groups_ Use of concat() and repeat() functions
Exercise 6-6 use a function to output an integer in reverse order
Selective sorting
编程语言:类型系统的本质
retrofit
7-14 sum integer segments (C language)