九度 1398 移动次数
http://ac.jobdu.com/problem.php?id=1398
静下来分析就行了,不过这题的描述有漏洞,说的是两两交换,没有说必需是相邻的两个才能交换啊
还有,注意最大值最小值不唯一的情况
1 #include <stdio.h>
2 int main()
3 {
4 int num[202];
5 int n;
6 while(scanf("%d",&n)!=EOF){
7 int i;
8 int max_num=-1;
9 int min_num=500;
10 int max_pos=-1;
11 int min_pos=-1;
12 for(i=1;i<=n;i++){
13 scanf("%d",&num[i]);
14 if(num[i]>=max_num){
15 max_num=num[i];
16 max_pos=i;
17 }
18 if(num[i]<min_num){
19 min_num=num[i];
20 min_pos=i;
21 }
22 }
23 if(min_pos==1&&max_pos==n){
24 printf("0\n");
25 continue;
26 }
27 if(min_pos==max_pos){
28 printf("0\n");
29 continue;
30 }
31 if(min_pos!=1&&max_pos!=n){//如果都不在正确位置上
32 if(min_pos<max_pos){
33 printf("%d\n",min_pos-1+n-max_pos);
34 }else{
35 printf("%d\n",min_pos-1+n-max_pos-1);
36 }
37 }else if(min_pos==1){//如果最小数在正确位置上
38 printf("%d\n",n-max_pos);
39 }else if(max_pos==n){//如果最大数在正确位置上
40 printf("%d\n",min_pos-1);
41 }
42 }
43 }