输入:n个数字。代表围成一圈人的身高
输出:身高差最小的两人的编号
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<cstdio>
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int n;
cin >> n;
int temp1=0,temp2=0;
int m[100];
memset(m, 0, sizeof(m));
//
for(int i = 1; i <= n; i ++) {
temp2 = temp1;
cin>>temp1;
if(temp1 >= temp2)
m[i] = temp1 - temp2;
else m[i] = temp2 - temp1;
}
//
if(m[1] >= temp1) m[1] = m[1] - temp1;
else m[1] = temp1 - m[1];
//找最大,m[0] 定义为哨兵
m[0] = 999;int min = 0;int i ;
for(i = n ; i > 1; i--) {
if(m[i] < m[0]){
m[0] = m[i];
min = i;
}
}
if(m[min] > m[1])
cout << n <<" 1"<<endl;
else
cout << min - 1 <<" "<< min;
return 0;
}
1 体感要求是输出任意一组都可以,但给的示例是最小的。所以写的时候也要在最小的?(懂得欢迎留言交流,本来没考虑这点,总是wa)
2 第一次写的时候没考虑///部分数据在赋值过程中会覆盖,以后注意