Cow Line(数据结构双端队列+文件格式(重定向)提交)

Cow Line(数据结构双端队列+文件格式(重定向)提交)
Cow Line(数据结构双端队列+文件格式(重定向)提交)
Cow Line(数据结构双端队列+文件格式(重定向)提交)
这道题题的意思很简单,实现只需要用双端队列就可以实现了,主要问题就在于它的输入格式(这是我头一次遇见这个东西);
就是在提交的时候需要有一个重定向:
但什么是重定向?
我是这样理解的:就是在一个头文件里,不是有宏定义吗?(如果熟悉Java的话,肯定就明白了),为了和文件里面的不重叠(就是不发生歧义)所以用了重定向?嘻嘻,其实在以前学习重定向的时候也没搞懂那是什么东西;现在明白了;就是来控制语句块执不执行;
常用的格式(就是把文件打开,提交上去后台自己读数据吧(我想的)):

//第一种
ifstream in("data.txt");
ofstream out("data.txt");
//第二种//注意#if 需要和一个#endif连用 
#ifndef Local//这大写的名字可以随便写//意思就是如果没有定义Local这个常量就执行以下的语句块
 ifstream in("data.txt");
 ofstream out("data.txt");
#endif
  

其实我觉得第一种好理解些,因为我不经常用重定向;只是了解一下这个是个啥就完了(我目前就认为是一个判断语句块执不执行);
最后解决这道题就很简单了:

#include<bits/stdc++.h>
using namespace std;
deque<int> d;
int main(){
	#ifndef Local
	ifstream in("data.txt");
	ofstream out("data.txt");
	#endif
	  int n;
	  char a,b;
	  int num,id=1;
	  cin>>n;
	  while(n--){ //这些代码按照题的理解很容易就懂了
	  cin>>a>>b;
	  if(a=='D') cin>>num;
	   	  if(a=='D'){
	   	  	     if(b=='R'){
	   	  	     	 for(int i=0;i<num;i++){
	   	  	     	 	  d.pop_back();
						   }
					  }else{
					  	for(int i=0;i<num;i++){
					  		  d.pop_front();
						  }
					  }
			 }else{
			 	 if(b=='L') d.push_front(id++);
			 	 else d.push_back(id++);
			 }
//			 for(int i=0;i<d.size();i++) cout<<d[i]<<" ";
//			 cout<<endl;
	   }
	   for(int i=0;i<d.size();i++){
	   	  printf("%d\n",d[i]);
	   }

	   return 0;
} 
上一篇:c – 逐行读取txt


下一篇:python 基础算法