本文主要是介绍51Nod_1174 区间中最大的数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
51Nod_1174 区间中最大的数
http://www.51nod.com/Challenge/Problem.html#!#problemId=1174
题目
给出一个有N个数的序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,最大的数是多少。例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题)
输入
第1行:1个数N,表示序列的长度。(2 <= N <= 10000);第2 - N + 1行:每行1个数,对应序列中的元素。(0 <= S[i] <= 10^9);第N + 2行:1个数Q,表示查询的数量。(2 <= Q <= 10000);第N + 3 - N + Q + 2行:每行2个数,对应查询的起始编号i和结束编号j。(0 <= i <= j <= N - 1)
输出
共Q行,对应每一个查询区间的最大值。
样例输入
5
1
7
6
3
1
3
0 1
1 3
3 4
样例输出
7
7
3
分析
遍历查询区间的每个数,得到最大值
C语言程序
#include<stdio.h>#define N 10000
int a[N];int main()
{int n,q,i,j,k;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);scanf("%d",&q);while(q--){scanf("%d%d",&i,&j);for(k=i+1;k<=j;k++)if(a[k]>a[i])i=k;printf("%d\n",a[i]);}return 0;
}
这篇关于51Nod_1174 区间中最大的数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!