(算法练习)——打印极值点下标

要求:
http://codeup.cn/problem.php?cid=100000585&pid=1
说明:
这一题看上去很简单,but,提交了几个先是答案错误,再是时间超限……依然是用的暴力挨个遍历的
代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;

int main(){
	int n;
	int record[100];
	int numrecord[200];
	while(scanf("%d",&n) != EOF){
		for(int i = 0;i <n;i++){
			scanf("%d",&record[i]);
			for(int j = 0;j <record[i];j++){
				scanf("%d",&numrecord[j]);
			}
			int count = 0;
			int signal = 0;
			int ans[200];
			
			if(count == 0){
					if(numrecord[count] != numrecord[count+1]){
						ans[signal] = count;
						count++;
						signal++;
					}
					else{
						count++;
					}
			}
					
			for(count = 1;count <record[i] - 1;count++){
				if(numrecord[count+1] >=numrecord[count] && numrecord[count-1] <= numrecord[count]){
					;
				}
				else if(numrecord[count+1] <=numrecord[count] && numrecord[count-1] >= numrecord[count]){
					;
				}
				
				else{
					ans[signal] = count;
					signal++;
				}
			}
			if(count == record[i] - 1){
					if(numrecord[count] != numrecord[count-1]){
						ans[signal] = count;
						count++;
						signal++;
					}
				}
			
			if(signal >0){
				for(int t=0;t <signal;t++){
					printf("%d",ans[t]);
					if(t <signal - 1){
						printf(" ");
					}
				}
				printf("\n");
			}
			memset(record,0,sizeof(record));
			memset(numrecord,0,sizeof(numrecord));
			memset(ans,0,sizeof(ans));
			count = 0;
			signal = 0;
			
		}
		
	}
	
}
发布了105 篇原创文章 · 获赞 3 · 访问量 1957

猜你喜欢

转载自blog.csdn.net/weixin_42377217/article/details/104023274