向量
向量构造
#include <bits/stdc++.h>
#include <string>
using namespace std;
int main ( ) {
int myarry[ ] = {
1 , 2 , 3 , 4 , 5 } ;
vector< int > myvector1;
vector< int > myvector2 ( myarry, myarry+ 5 ) ;
vector< int > myvector3 ( 5 , 2 ) ;
vector< int > myvector4 ( myvector2) ;
vector< int > myvector5 ( myvector4. begin ( ) , myvector4. begin ( ) + 5 ) ;
return 0 ;
}
向量操作
#include <bits/stdc++.h>
#include <string>
using namespace std;
int main ( ) {
int myarry[ ] = {
1 , 2 , 3 , 4 , 5 } ;
vector< int > myvector ( myarry, myarry+ 5 ) ;
int n= myvertor. size ( ) ;
myvector. pop_back ( ) ;
myvector. push_back ( 6 ) ;
myvector. insert ( myvector. begin ( ) + 1 , 9 ) ;
myvector. insert ( myvector. begin ( ) , 3 , 7 ) ;
myvector. insert ( myvector. begin ( ) , myarry, myarry+ 2 ) ;
myvector. erase ( myvector. begin ( ) + 6 ) ;
myvector. erase ( myvector. begin ( ) + 1 , myvector. begin ( ) + 3 ) ;
myvector. clear ( ) ;
return 0 ;
}
队列
队列操作
#include <bits/stdc++.h>
#include <string>
using namespace std;
int main ( ) {
queue< int > myqueue;
for ( int i= 0 ; i< 10 ; ++ i) {
myqueue. push ( i) ;
}
int sum= 0 ;
while ( ! myqueue. empty ( ) ) {
sum+ = myqueue. front ( ) ;
myqueue. pop ( ) ;
}
printf ( "%d" , sum) ;
return 0 ;
}
猫狗收容所(先入先出特性) 题目描述:
输入
第一个是n,他代表操作序列的次数,接下来是n行,每行有两个值m和t,分别代表题目中的两个元素。
输出
样例输入
样例输出
解法思路
代码
#include <bits/stdc++.h>
#include <string>
using namespace std;
struct animal{
int id;
int order;
animal ( ) {
}
animal ( int n, int o) : id ( n) , order ( o) {
}
} ;
int main ( ) {
animal a = animal ( ) ;
animal b = animal ( 3 , 2 ) ;
printf ( "%d %d\n" , a. id, a. order) ;
printf ( "%d %d\n" , b. id, b. order) ;
return 0 ;
}
#include <bits/stdc++.h>
#include <string>
using namespace std;
struct animal{
int id;
int order;
animal ( ) {
}
animal ( int n, int o) : id ( n) , order ( o) {
}
} ;
queue< animal> cats;
queue< animal> dogs;
int main ( ) {
int n;
scanf ( "%d" , & n) ;
for ( int i= 0 ; i< n; ++ i) {
int method, type;
scanf ( "%d%d" , & method, & type) ;
int order= 0 ;
if ( method== 1 ) {
if ( type> 0 ) {
dogs. push ( animal ( type, order++ ) ) ;
} else if ( type< 0 ) {
cats. push ( animal ( type, order++ ) ) ;
}
} else {
if ( type== 0 && ! dogs. empty ( ) && ! cats. empty ( ) ) {
if ( dogs. front ( ) . order< cats. front ( ) . order) {
printf ( "%d" , dogs. front ( ) . id) ;
dogs. pop ( ) ;
} else {
printf ( "%d" , cats. front ( ) . id) ;
cats. pop ( ) ;
}
} else if ( type== 0 && ! dogs. empty ( ) && cats. empty ( ) ) {
printf ( "%d" , dogs. front ( ) . id) ;
dogs. pop ( ) ;
} else if ( type== 0 && dogs. empty ( ) && ! cats. empty ( ) ) {
printf ( "%d" , cats. front ( ) . id) ;
cats. pop ( ) ;
} else if ( type== 1 && ! dogs. empty ( ) ) {
printf ( "%d" , dogs. front ( ) . id) ;
dogs. pop ( ) ;
} else if ( type== - 1 && ! cats. empty ( ) ) {
printf ( "%d" , cats. front ( ) . id) ;
cats. pop ( ) ;
}
}
}
printf ( "\n" ) ;
return 0 ;
}
栈
栈操作
#include <bits/stdc++.h>
#include <string>
using namespace std;
int main ( ) {
stack< int > mystack;
for ( int i= 0 ; i< 10 ; ++ i) {
mystack. push ( i) ;
}
int sum= 0 ;
while ( ! mystack. empty ( ) ) {
printf ( "%d\n" , mystack. top ( ) ) ;
sum+ = mystack. top ( ) ;
mystack. pop ( ) ;
}
printf ( "%d" , sum) ;
return 0 ;
}
逆序输出 题目描述:
扫描二维码关注公众号,回复:
13142573 查看本文章
输入
输出
样例输入
样例输出
解法思路
代码
括号匹配 题目描述:
输入
输出
样例输入
样例输出
解法思路
扫描字符串:遇到左括号入栈、遇到右括号判断栈里有没有左括号、字母不操作
代码
#include <bits/stdc++.h>
#include <string>
using namespace std;
int main ( ) {
string str;
while ( getline ( cin, str) ) {
stack< int > mystack;
string answer ( str. size ( ) , ' ' ) ;
for ( int i= 0 ; i< str. size ( ) ; ++ i) {
if ( str[ i] == '(' ) {
mystack. push ( i) ;
} else if ( str[ i] == ')' ) {
if ( ! mystack. empty ( ) ) {
mystack. pop ( ) ;
} else {
answer[ i] = '?' ;
}
}
}
while ( ! mystack. empty ( ) ) {
answer[ mystack. top ( ) ] = '$' ;
mystack. pop ( ) ;
}
cout<< str<< endl;
cout<< answer<< endl;
}
return 0 ;
}
#include <bits/stdc++.h>
#include <string>
using namespace std;
bool jud ( ) {
string str;
while ( getline ( cin, str) ) {
stack< char > mystack;
for ( int i= 0 ; i< str. size ( ) ; ++ i) {
if ( str[ i] == '(' ) {
mystack. push ( str[ i] ) ;
} else if ( str[ i] == ')' ) {
if ( ! mystack. empty ( ) ) {
mystack. pop ( ) ;
} else {
return false;
}
}
}
if ( ! mystack. empty ( ) ) {
return false;
} else {
return true;
}
}
}
int main ( ) {
bool result= jud ( ) ;
if ( result) {
printf ( "yes" ) ;
} else {
printf ( "no" ) ;
}
return 0 ;
}
表达式求值 题目描述:
输入
输出
样例输入
样例输出
解法思路
∗ * ∗ / < + -
左>右
代码