作者:mobiledu2502874983 | 来源:互联网 | 2023-05-17 08:24
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.输入描述:输入包括多组测试数据。每组输入第一行是两个正整数N
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.
输入描述:
输入包括多组测试数据。
每组输入第一行是两个正整数N和M(0
输出描述:
对于每一次询问操作,在一行里面输出最高成绩.
输入例子:
5 7
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 4 5
U 2 9
Q 1 5
输出例子:
5
6
5
9
以上题目要求在OJ(online judge)环境下测试,要求对多组数据进行判断,要求输入组数的多少,因此可以采用for循环的方法。对于没有输入测试数据组数个数的情况,应采用输入字符串的长度或者cin操作的返回布尔变量来判断。对比优秀的程序代码,本文仍需充分利用algorithm中的max和swap等函数,提高代码质量,缩短编程调试时间,提高准确性。
#include
using namespace std;
int FindMax(int* data,int a,int b)
{
int max=-1;
if(a>b)
{
int temp=a;
a=b;
b=temp;
}
for(int i=a;i<=b;i++)
{
if(max>m>>n;//输入学生个数和操作的个数
int score[1000]={0};
for(int i=0;i>score[i];//输入每个学生的成绩
}
int Qresult[1000]={0};
int count=0;//标记查询的次数
for(int j=0;j>c>>a>>b;
if(c=='Q')
{
Qresult[count++]=FindMax(score,a-1,b-1);
}
else if(c=='U')
{
score[a-1]=b;
}
else
cout<<"输入有错误"<附加其他优秀代码参考:
#include
#include
using namespace std;
const int MAXN=100000;
int data[MAXN+5];
int querymax ( int l , int r ) {
int ans=data[l];
for(int i=l+1;i<=r;i++) ans=max(ans,data[i]);
return ans;
}
void update(int idx,int value){
data[idx]=value;
}
int main(){
int n,m;
while(~scanf("%d%d",&n,&m)){
for(int i=1;i<=n;i++){
scanf("%d",&data[i]);
}
char order;
int a,b;
for(;m--;){
scanf(" %c%d%d",&order,&a,&b);
if(order=='U'){
update(a,b);
}else if(order=='Q'){
if(a>b)swap(a,b);
printf("%d\n",querymax(a,b));
}
}
}
return 0;
}