选择题
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
编程题
思路分析:
AC代码:
#include<iostream>
using namespace std;
#include<vector>
int main()
{
int n;
cin>>n;
vector<int>a;
a.resize(n+1); //要多开一个空间,不然后面a[i+1]会越界访问
for(int i=0;i<n;i++)
cin>>a[i];
int i=0;
int count=0;//组数
while(i<n)
{
//第一次比较有三种情况 < = >
if(a[i]<a[i+1])//暂时判断是递增的
{
while(i<n && a[i]<=a[i+1])
{
i++;
}
count++;
i++;
}
else if(a[i]==a[i+1])//如果相同就i++
{
i++;
}
else // >的情况
{
while(i<n && a[i]>=a[i+1])
{
i++;
}
count++;
i++;
}
}
cout<<count<<endl;
return 0;
}
思路分析:
1.整体翻转
2.局部翻转
AC代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
string s1;
getline(cin,s1);
reverse(s1.begin(),s1.end());
string::iterator first=s1.begin();
while(first!=s1.end())
{
string::iterator last=first;
while(last!=s1.end() && *last!=' ')//两个条件都要成立 后面还需要判断是否已经到达s1.end()
{
last++;
}
//局部翻转
reverse(first,last);
if(last!=s1.end())
first=last+1;
else
{
first=last;
}
}
cout<<s1<<endl;
}
递归方法:
#include<stdio.h>
void reserve()
{
char arr[100];
if ((scanf("%s",arr))!=EOF)
{
reserve();
printf("%s ",arr);
}
}
int main()
{
reserve();
return 0;
}
如有错,多多指教!