首页 > 试题广场 > 最高分是多少
[编程题]最高分是多少
  • 热度指数:174928 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

输入描述:
输入包括多组测试数据。
每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
学生ID编号从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。


输出描述:
对于每一次询问操作,在一行里面输出最高成绩.
示例1

输入

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
推荐
华为仿佛找了一种比较奇特的方法来区分应聘者啊。

先来说说这题的3种做法:
最简单的就是暴力了。每次查询直接做。
修改复杂度O(1),查询复杂度O(N)
#include <stdio.h>
#include <algorithm>
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;
}
……如果他们手一抖,写成N<=100000,M<=100000怎么办? 
!!!注意:以下内容涉及高级数据结构!!!
首先,有ACM经验的选手,一看这个题,第一反应,线段树好~
线段树这种数据结构,修改O(logn),查询O(logn),但是要预处理O(nlogn)
这个,如果没有ACM经验,也不打算认真做ACM的同学,看看就好。
#include <stdio.h>
#include <algorithm>
using namespace std;

const int MAXN=100000;

int data[MAXN+5];
int maxarr[MAXN*4+5];

void build(int p,int l,int r) {
    if(l==r){
        maxarr[p]=data[l];
        return ;
    }
    int m = ( l + r ) >> 1 ;
    int lchild=p<<1,rchild=p<<1|1;
    build ( lchild , l , m ) ;
    build ( rchild , m+1 , r ) ;
    maxarr[p]=max(maxarr[lchild],maxarr[rchild]);
}

int querymax ( int L , int R , int p , int l , int r ) {
    if ( L <= l && r <= R ) {
        return maxarr[p];
    }
    int m = ( l + r ) >> 1 ;
    int lans=-1,rans=-1;
    if ( L <= m ) lans=querymax ( L , R , p << 1 , l , m ) ;
    if ( m <  R ) rans=querymax ( L , R , p << 1 | 1 , m + 1 , r ) ;
    if(lans==-1)return rans;
    if(rans==-1)return lans;
    return max(lans,rans);
}

void update(int idx,int value,int p,int l,int r){
	if(l==r&&l==idx){
		maxarr[p]=value;
		return;
	}
    int m = ( l + r ) >> 1 ;
    if ( idx <= m ) update( idx, value, p << 1, l, m );
    if ( m <  idx ) update( idx, value, p << 1|1, m+1, r );
    maxarr[p]=max(maxarr[p<<1],maxarr[p<<1|1]);
}

int main(){
	int n,m;
	while(~scanf("%d%d",&n,&m)){
		for(int i=1;i<=n;i++){
			scanf("%d",&data[i]);
		}
		build(1,1,n);
		char order;
		int a,b;
		for(;m--;){
			scanf(" %c%d%d",&order,&a,&b);
			if(order=='U'){
				update(a,b,1,1,n);
			}else if(order=='Q'){
				if(a>b)swap(a,b);
				printf("%d\n",querymax(a,b,1,1,n));
			}
		}
	}
    return 0;
}
 有没有什么办法,普通人能去想出来,又不需要专门去学过高级数据结构呢?
有一个,叫块状链表(其实块状数组也行吧)。
好吧,其实分块的思想也不怎么常见,谈针对面试的算法的思路,都谈分治、贪心、递推、动态规划,没见人说过分块的样子。但是,分块是比较容易理解的。
很简单,现在我们把整个N大小的数组按顺序拆成sqrt(n)(根号n)个小数组,每个小数组有sqrt(n)个元素
比如 1 2 3 4 5 6 7 8 9
现在拆成
1 2 3
4 5 6
7 8 9
然后对每一个小块,我们除了改掉相应位置的值,还要额外记录一下整个小块的最大值。
如果我更新的时候,那个小块的最大值增大,那很简单,最大值也增大了。
如果把最大值改小了呢?为了正确性,只能把整个小块扫一遍,重新算出最大值了。
所以,修改的复杂度是O(sqrt(n))
现在看查询。我们要充分利用分小块以后的信息。
比如要查询2到9的最大值。按之前最朴素的暴力的做法,我要访问2、3、4、5、6、7、8、9
现在有小块的最大值信息了,我只要判断每个小块是否在查询区间内,不在的没用,一部分在的,就暴力查找,如果是完整在查询区间内的,我们就利用之前算好的这个小块内的最大值。
所以,分块的情况下,查询2到9的最大值,需要看看2、3,以及4~6的最大值,7~9的最大值。
很容易证明,查询的复杂度是O(sqrt(n))的(最坏是sqrt(n)个块全部要用,左右2边只盖住sqrt(n)-1个数,要暴力遍历过去)
//TODO:在这里补上分块法的代码

3种流派全部可过,但是明显的,在极限数据情况下,能够轻易区分出普通应聘者,会动脑的应聘者和有ACM经验的应聘者了。
编辑于 2016-04-09 16:28:45 回复(45)
GGR头像 GGR
此题坑人的地方有两处:
1,不止输入一组n m ;
2,AB之间,可能A>B

编辑于 2015-09-10 09:53:00 回复(27)

python solution

注意的是输入的查询起始与结束可能没有排好序,所以要事先排一下。也算一个坑吧。

while True:
    try:
        a, b = map(int, input().split())
        grades = list(map(int, input().split()))
        for i in range(b):
            command = input().split()
            if command[0] == "Q":
                start, end = sorted([int(command[1]), int(command[2])])
                print(max(grades[start - 1:end]))
            else: grades[int(command[1]) - 1] = int(command[2])
    except:
        break
发表于 2017-11-07 17:19:24 回复(20)

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		int M=0 ,N=0;
		int i;
		int A = 0,B = 0;
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
				N = in.nextInt();
				M = in.nextInt();	
	
	//			System.out.println (N + " " + M);
				
			int[] score = new int[N];
			for(i=0; in.hasNext() && i<N; i++){
				score[i] = in.nextInt();
	//			System.out.println (score[i] + " ");
			}
			
			String c = null;
			
			for(i=0; in.hasNext() && i< M; i++){
				c  = in.next();
				A = in.nextInt();
				B = in.nextInt();	
				process(c,A,B,score);
			}
		}
			
	}

	private static void process(String c, int a, int b, int[] score) {
		int begin,end;		
		
		if(c.equals("Q")){
			end = Math.max(a, b);
			begin = Math.min(a, b)-1;
			int max = score[begin];
			for(int i=begin;i<end;i++){
				if(max<score[i]){
					max = score[i];
				}
			}
			System.out.println(max);
		}else if(c.equals("U")){
			score[a-1] = b;
		}
	}
}
坑爹啊,漏了whie(in.hasNext())
编辑于 2015-09-02 22:57:42 回复(18)
#include<algorithm>
#include<vector>
using namespace std;
 
int main()
{
    int N,M;
    while(cin>>N>>M){
        vector<int> stu(N);
        int a,b;char c;
        for(int i=0;i<N;++i)cin>>stu[i];
        for(int j=0;j<M;++j){
            cin>>c>>a>>b;
            if(c=='Q'){
                if(a>b)swap(a,b);
                cout<<*max_element(stu.begin()+a-1,stu.begin()+b)<<endl;                    
            }    
            if(c=='U')stu[a-1]=b;         
        }
    }
    return 0;
}

编辑于 2016-10-06 19:15:35 回复(9)
//线段树
#include <iostream>
#include <string>
using namespace std;
#define L(x) x<<1
#define R(x) (x<<1)+1
#define Max(x,y) x>=y?x:y
#define Min(x,y) x<=y?x:y

struct Node
{
	int left,right;
	int value;
	int flag;
};

Node data[30001<<2];
void Build(int i, int l, int r)
{
	
	data[i].left = l;
	data[i].right = r;
	if(l == r)
	{
		scanf("%d",&data[i].value);
		return;
	}
	int mid = (l+r)>>1;
	Build(L(i),l,mid);
	Build(R(i),mid+1,r);
	data[i].value = max(data[L(i)].value,data[R(i)].value);	
}

int Query(int i, int l, int r)
{
	if(l>r||data[i].right < l||data[i].left > r)
		return 0;

	if(data[i].right == r && data[i].left == l)
		return data[i].value;
	int mid = (data[i].right+data[i].left)>>1;

	if(mid < l) return Query(R(i),l,Min(r,data[i].right));
	else if(mid >= r) return Query(L(i),Max(l,data[i].left),r);
	else return max(Query(L(i),Max(l,data[i].left),mid),Query(R(i),mid+1,Min(r,data[i].right)));
}

void Update(int root, int i, int newValue)
{
	if(i == data[root].left && i == data[root].right)
	{
		data[root].value = newValue;
		return;
	}
	int mid = (data[root].left + data[root].right)>>1;
	if(i <= mid)
		Update(L(root),i,newValue);
	else
	    Update(R(root),i,newValue);

	data[root].value = max(data[L(root)].value,data[R(root)].value);
}

int main()
{
	int N,M;  
	while(cin>>N>>M)
    {
        Build(1,1,N);  
        char op[10];  

        while(M--)  
        {  int a,b;
            scanf("%s %d %d",op, &a, &b);  
            if(op[0] == 'Q')  
                printf("%d\n",Query(1,min(a,b),max(a,b)));  
            else if(op[0] == 'U')  
                Update(1,a,b);  

        }  

    }
	return 0;
}


发表于 2016-09-06 15:27:43 回复(0)
#include<iostream>  
using namespace std;  

//全局数组
int data[30000]={0};

//遍历A到B之间的元素,寻找最大值
int query(int l,int r)
{
int max=data[l];
for(int i=l+1;i<=r;i++)
if(max<data[i])
max=data[i];
return max;
}
//更新
void update(int a0,int b0)
{
data[a0]=b0;
}
int main()
{
int N,M;
cin>>N>>M;

for(int i=0;i<N;i++)
cin>>data[i];//初始成绩
        char c;
int a,b;
for(int j=0;j<M;j++)//M行
{
      cin>>c>>a>>b;
      if(c=='U')
           update(a,b);
      else if(c=='Q')
           cout<<query(a,b)<<endl;
}
return 0;
}
编辑于 2017-04-23 15:24:46 回复(0)
#include<stdio.h>
#include<string.h>
struct stu{//定义一个学生信息的结构体变量
    intnum;
    intscore;
};
 
intmain()
{
    intN, M;
    inti, j;
    intA, B;
    inttemp;
    charc;
    struct stu students[30000];
     
    while(scanf("%d %d", &N, &M) != EOF)//注意多组测试用例
    {
        for(i =0; i < N; i++)
        {
            students[i].num = i +1;
        }
        for(i =0; i < N; i++)
            scanf("%d", &students[i].score);
        for(j =0; j < M; j++)
        {
            c = getchar();
             
            if(c =='Q')//返回A~B之间的最大值
            {
                scanf("%d %d", &A, &B);
                if(A < B)   //注意A和B的关系
                {
                    temp = students[A -1].score;
                    for(i = A; i < B; i++)//找最大值
                    {
                        if(temp < students[i].score)
                            temp = students[i].score;
                    }
                    printf("%d\n", temp);
                }
                if(A >= B)
                {
                    temp = students[B -1].score;
                    for(i = B; i < A; i++)
                    {
                        if(temp < students[i].score)
                            temp = students[i].score;
                    }
                    printf("%d\n", temp);
                }
            }
            if(c =='U')//将A的成绩置为B
            {
                scanf("%d %d", &A, &B);
                students[A-1].score = B;
            }
        }
    }
    return0;
}
发表于 2016-07-05 16:18:44 回复(1)
此题多组数据没有在题意中说清楚,建议修改题目!!!
发表于 2017-08-03 14:45:17 回复(0)
大家要特别注意“有多组测试用例”这句话啊,真shi坑爹。 while(cin>>N>>M)//因为有多组测试数据

发表于 2015-08-25 11:13:25 回复(20)
while True:
	try:
		inp_m_n=raw_input()
		inp_m_n=inp_m_n.split()
		M=int(inp_m_n[1])
		N=int(inp_m_n[0])
		input_id=raw_input()
		input_id=input_id.split()
		input_id=[int(i) for i in input_id]

		dic={}
		out_show=[]
		while(M>0):
			M-=1
			input_q_u=raw_input()
			input_q_u=input_q_u.split()
			A=int(input_q_u[1])
			B=int(input_q_u[2])
			if(input_q_u[0]=='Q'):
				if(A==B):
					out_show.append(input_id[A-1])
				elif(A>B):
					
					out_show.append(max(input_id[B-1:A]))
				else:
					out_show.append(max(input_id[A-1:B]))
			elif(input_q_u[0]=='U'):
				input_id[A-1]=B
		for i in out_show:
			print i
	except:
		break
	

发表于 2016-08-05 21:32:21 回复(2)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void Caozuo(vector<int> &vec,char a,int b,int c)
{vector<int> temp;
if(a=='Q')
{
temp=vec;
if(b>c)
swap(b,c); ///////如果b>c则交换两个的值,然后再排序,否则会有段错误
sort((temp.begin()+b-1),(temp.begin()+c));//
cout<<temp[c-1]<<endl;
}
if(a=='U')
{
vec[b-1]=c;
}
}
int main()
{
int N,M;
int num,a,b;
char ch;
while(cin>>N>>M)
{
vector<int> Nc;
vector<char> Mcch;
vector<int> Mcnum;
vector<int> Mcnum1;
for(int i=0;i<N;i++)//录入成绩
{cin>>num;
Nc.push_back(num);
}
for(int i=0;i<M;i++)//录入操作
{
cin>>ch>>a>>b;
Mcch.push_back(ch);
Mcnum.push_back(a);
Mcnum1.push_back(b);
}
for(int i=0;i<M;i++)
{
Caozuo(Nc,Mcch[i],Mcnum[i],Mcnum1[i]);
}
}
return 0;
}
编辑于 2016-09-05 08:58:56 回复(0)
  • 此题坑人的地方有两处:
  1. 不止输入一组n m ;

  2. AB之间,可能A>B

  • python方法
    while True:
      try:
          N, M = [int(x) for x in input().split()]
          score = [int(x) for x in input().split()]
          operate = []
          for i in range(M):
              operate.append([x for x in input().split()])
          for i in range(M):
              a = int(operate[i][1])
              b = int(operate[i][2])
              if operate[i][0] == 'Q':
                  if a > b:
                      a, b = b, a
                  print(max(score[a-1:b]))
              if operate[i][0] == 'U':
                  score[a-1] = b
      except:
          break
    
发表于 2018-08-21 15:19:46 回复(2)
import sys 
while True: 
    try: 
        NM = sys.stdin.readline().split(' ')

        N = int(NM[0])
        M = int(NM[1])

        inputGrades = sys.stdin.readline().split(' ')
        grades = [int(_) for _ in inputGrades]

        for _ in range(M):
            inputText = sys.stdin.readline().split(' ')
            if inputText[0] == 'Q':
                startID = int(inputText[1])
                endID = int(inputText[2])
                maxGrade = max(grades[min(startID, endID)-1: max(startID, endID)])
                print(maxGrade)
            elif inputText[0] == 'U':
                sID = int(inputText[1])
                sGrade = int(inputText[2])
                grades[sID - 1] = sGrade
    except: 
        break

编辑于 2017-07-25 22:07:49 回复(0)
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner keyin = new Scanner(System.in);
		while(keyin.hasNextLine()){
		int action, num  ;  //表示操作数和学生数
		String putIn = keyin.nextLine() ;
		action = getAction(putIn);
		num = getNum(putIn);
		int data[] = new int [num] ;
		putIn = keyin.nextLine() ;
		LogIn(putIn,data);
		int result[] = new int [action];
		for(int x = 0 ; x < action ; x ++){
			putIn = keyin.nextLine();
			String all [] = putIn.split(" ");
			if(all[0].equals("Q")){
				result [x] = compare(data,Integer.parseInt(all[1]),Integer.parseInt(all[2]));
			}else{
				result[x] = -1 ;
				data[Integer.parseInt(all[1]) - 1] = Integer.parseInt(all[2]) ;
			}
		}
		for(int x = 0 ; x < result.length ; x ++){
			if(result[x] >= 0){
				System.out.println(result[x]);
			}
		}}
	}

	public static int compare(int[] data, int x, int y) {
		int all[] = new int [y - x + 1] ;
		int n = 0 ;
		for(int z = x - 1 ; z < y ;z ++){
			all[n] = data [z] ; 
			n ++ ;
		}
		Arrays.sort(all);
		return all[all.length - 1] ;
	}
	public static void LogIn(String putIn, int[] data) {
		String all[] = putIn.split(" ");
		for(int x = 0 ; x < data.length ; x ++){
			data[x] = Integer.parseInt(all[x]) ;
		}
	}
	public static int getAction(String str){
		String all[] = str.split(" ");
		return Integer.parseInt(all[1]) ;
	}
	public static int getNum(String str){
		String all[] = str.split(" ");
		return Integer.parseInt(all[0]) ;
	}

}

发表于 2016-08-29 16:59:24 回复(2)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class GradeQuery{
    public:
    vector<int> stuGrade;
    void query(int stu1, int stu2){
        auto it = max_element(stuGrade.begin()+stu1-1, stuGrade.begin()+stu2);
        cout << *it << endl;
    }
    void update(int stu, int grade){
        stuGrade[stu-1] = grade;
    }
};

int main(){
    int num, oper_num;
    while(cin >> num >> oper_num){
    GradeQuery gradeQuery;
    int tmp, arg1, arg2;
    char inChar;
    for(int i=0; i<num; i++){
        cin >> tmp;
        gradeQuery.stuGrade.push_back(tmp);
    }
    for(int i=0; i<oper_num; i++){
        cin >> inChar >> arg1 >> arg2;
        if(inChar == 'Q') {
            if(arg2>=arg1) gradeQuery.query(arg1, arg2);
            else gradeQuery.query(arg2,arg1);
        }
        else gradeQuery.update(arg1, arg2);
    }
    }

    return 0;
}
发表于 2018-03-13 23:24:05 回复(0)
import java.util.Scanner;
import java.util.ArrayList;

public class Main {

	 public static void main(String[] args)throws Exception{
		 Scanner s = new Scanner(System.in);
		 int[] data = new int[2];
		 do{
		 data[0] = s.nextInt();
		 data[1] = s.nextInt();
		 ArrayList<Integer> array = new ArrayList<Integer>();
		 for(int i = 0; i < data[0]; i ++){
			 array.add(s.nextInt());
		 }
		 int num = 0;
		 char a ;
		 int b,c;
		 while(num < data[1]){
			 a = s.next().charAt(0);
			 b = s.nextInt();
			 c = s.nextInt();
			 if('Q' == a){
				 int start, end;
				 if(b <= c){
				 start = b - 1;
				 end = c - 1;
				 }else{
					 start = c - 1;
					 end = b - 1;
				 }
				 int max = array.get(start);
				 for(int index = start; index <= end; index ++){
					 if(array.get(index) >= max)
						 max = array.get(index);
				 }
				 //result.add(max);
				 System.out.println(max);
			 }
			 if('U' == a){
				 int index1 = b - 1;
				 int newValue = c;
				 array.set(index1, newValue);
			 }
			 s.nextLine();
			 num ++;
		 }
		 }while(s.hasNext());
		 s.close();
			 
	}
}

发表于 2015-08-24 21:25:52 回复(2)
#include <vector>
#include <iostream>
using namespace std;

int CheckMax(vector<int> & stu, int a, int b){
	int m = stu[a];
	for (int i = a; i <= b; i++) m = max(m, stu[i]);
	return m;
}
int main(void){
	int n = 0, m = 0;
	while(cin >> n >> m){
	vector<int> stu(n);
	char c;
	int a = 0, b = 0;
	for (int i = 0; i<n; i++) cin >> stu[i];
	for (int i = 0; i<m; i++){
		cin >> c>>a>>b;
		if (c == 'Q'){
			if (a>b) swap(a, b);
			cout<<CheckMax(stu,a-1,b-1)<<endl;
		}
		if (c == 'U') stu[a - 1] = b;
	}
    }
}

发表于 2015-09-08 14:40:30 回复(0)
#include <iostream>

using namespace std;

int getMax(int *pScore, int low, int high)
{
    if(low > high)
    {
        high = low ^ high;
        low = low ^ high;
        high = low ^ high;
    }
    int maxScore = pScore[low];
    for(int i = low + 1; i <= high; ++i)
    {
        if(maxScore < pScore[i])
        {
            maxScore = pScore[i];
        }
    }

    return maxScore;
}

int main()
{
    int N = 0;
    int M = 0;
    while(cin >> N >> M)
    {
        int *pScore = new int[N + 1];
        for(int i = 1; i <= N; ++i)
        {
            cin >> pScore[i];
        }

        for(int i = 0; i < M; ++i)
        {
            char ch = '\0';
            int low = 0;
            int high = 0;

            cin >> ch >> low >> high;

            if('Q' == ch)
            {
                cout << getMax(pScore, low, high) << endl;
            }
            else if('U' == ch)
            {
                pScore[low] = high;
            }
            else
            {
                // continue;
            }
        }

        delete[] pScore;
    }

    return 0;
}

发表于 2015-08-24 20:23:07 回复(13)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int N,M;
    while(cin >> N >> M)
    {
        if(N<0 || N>30000 || M<0 || M>=5000)
        {
            return -1;
        }
        vector<int> grades;
        grades.push_back(-1);
        for(int i=0; i<N; i++)
        {
            int temp;
            cin >> temp;
            grades.push_back(temp);
        }
        for(int j=0; j<M; j++)
        {
            char C;
            int A,B;
            cin >> C >> A >> B;
            switch(C)
            {
                case('Q'):
                {
                    if(A<=B)
                    {
                        auto max = max_element(grades.begin()+A,grades.begin()+B+1);
                        cout << *max << "\n";
                        break;
                    }
                    else if(A>B)
                    {
                        auto max = max_element(grades.begin()+B,grades.begin()+A+1);
                        cout << *max << "\n";
                        break;
                    }
                }
                case('U'):
                {
                    grades[A]=B;
                    break;
                }
            }
        }
    }
    return 0;
}
发表于 2018-03-13 23:28:06 回复(0)
#include<iostream>
using namespace std;
int PRINTF_MAX(int *a,int A,int B);
int main()
{
    int N,M,A,B,C=0;
    char j;
    while(cin>>N>>M)
    {
    int *a=new int[N*sizeof(int)];
    int *b=new int[M*sizeof(int)];
    for(int i=0;i!=N;++i)
        cin>>a[i];
    for(int i=0;i!=M;++i)
        {
        cin>>j;
        if(j=='Q')
            {
            cin>>A>>B;
            b[C]=PRINTF_MAX(a,A,B);
            C++;
        }
        else if(j=='U')
            {
            cin>>A>>B;
            a[A-1]=B;
        }
        else cout<<"ERROR!"<<endl;
    }
    for(int i=0;i!=C;++i)
        cout<<b[i]<<endl;
    }
    /**a=NULL;
    *b=NULL;
    delete []a;
    delete []b;*/
    //getchar();
	return 0;
}
int PRINTF_MAX(int *a,int A,int B)
    {
    int MAX=0,TEMP;
    if(B<A)
        {
        TEMP=A;
        A=B;
        B=TEMP;
    }
    for(int k=A;k<=B;k++)
        {
        if(MAX<=a[k-1])
            MAX=a[k-1];
    }
    return MAX;
}
//有没有大神给解惑下,我这个代码就卡在10%第二个用例过不去,可是在自己电脑上没出错啊!!!!

发表于 2017-06-28 01:10:58 回复(1)