创建栈S,字符数组str[80]
输入字符串到字符数组中
把字符数组的字符一个个放入栈S
for(i=0;str[i];i++){
出栈S
把出栈的元素与str[i]比较
有不匹配时就不符合,都匹配即符合对称
}
按要求相应输出
定义变量 number存放数值,numbers存放个数,整型变量,count=0
输入numbers,number的值
新建并初始化队列,长度为numbers+1
当numbers<=number输出error
把数据输入队列
while(队列非空){
count++;
把小于number的数先删除,再加入队列排到后面
按格式要求输入此时队列的第一个数(count来判断格式)
}
定义变量 number存放数值,numbers存放个数,循环变量i,count=0;
输入numbers的值
新建并初始化队列q与Q,长度都为numbers+1
输入number的值,奇数放入q队列,偶数放入Q队列
while(Q,与q都非空){
count++;
按题目要求2奇1偶输出 }
while(Q非空){以count判断有无执行上循环,按格式输出元素}
while(q非空){以count判断有无执行上循环,按格式输出元素}
本次2个题目集总分:125+215=340分
必做题共:205分
本题评分规则:
(1)2个题目集PTA总分340分:3分(全部题目都做)
(2)PTA总分在205分--340分:2.5分(必做题全部做完,选做题做部分)
(3)PTA总分在110--205分:2分(必做题大部分做完)
(4)PTA总分在90--110分:1.5分
(5)PTA总分在55分-90分以下:1分
(6)PTA总分在55分以下:0分
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[100005];
int rail[100005];//数组的值表示当前轨道最左边列车
int cnt;
void Binary_search(int x)//二分搜索轨道数组
{
int l , r, mid;
l = 1;
r = cnt;
while(l < r)
{
mid = l + (r - l)/2;
if(rail[mid] > x) r = mid;
else if(rail[mid] < x)l = mid + 1;
}
rail[r] = x;
}
int main()
{
int n, i, j;
scanf("%d", &n);
for(i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
cnt = 0;
for(i = 1; i <= n; i++)
{
if(cnt == 0)//当没有列车在中间轨道时
{
cnt++;
rail[cnt] = a[i];
}
else
{
if(rail[cnt] < a[i])//轨道上的列车都比当前列车小
{
rail[++cnt] = a[i];
}
else Binary_search(a[i]);
}
}
cout<<cnt<<endl;
return 0;
}
原文:https://www.cnblogs.com/linxiaolu/p/8763003.html