安为

小Q最近在玩一个嵌入式开发板,看着板子上的一堆电容,他想比较板子上电容数量的多少。第一行给定比较次数n,接下来n行,每行给定两个板子的编号a1,a2,编号从1开始。每行第一个元素a1为第一次比较中板子上电容数量较多的 板子编号,第二个元素a2为板子上电容数量较少的板子编号。最后一行为要比较的两块板子的编号a,b.请返回这两块板子上电容数量大小的关系,若a更多返回1,b更多返回-1,无法判断返回0。输入数据保证合法,不会有矛盾的情况出现。

记录比较次数
while记录每组数据存到数组j
把所有数据不重复的保存到k数组中
遍历数组k,取出每个数据,从j中查找,根据记录调换位置。(类四冒泡排序)
比较最后一行中两个数据在排好序的数组中的顺序。

样例输入如下:

4 //比较次数

1 2

2 4

1 3

4 3

2 3


样例输出:

1

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int main()
 5 {
 6     /*
 7     n:给定的比较次数
 8     a/b:最后一行要比较的板子上电容的编号
 9     arrayj:输入的每组数据
10     arrayk:所有不重复的数据
11     klen:arrayk的长度
12     */
13     int n,a,b,klen=0;
14     int arrayj[100][2];
15     int arrayk[100];
16     scanf("%d",&n);
17     for(int i=0;i<n;i++)
18     {
19         scanf("%d",&arrayj[i][0]);
20         scanf("%d",&arrayj[i][1]);
21     }
22     scanf("%d",&a);
23     scanf("%d",&b);
24 
25     for(int i=0;i<n;i++)
26     {
27         //status:状态位,判断arrayk[]中是否有arrayj[][],1表示不存在,0表示存在
28         int status=1;
29         for(int j=0;j<klen;j++)
30         {
31             if(arrayk[j]==arrayj[i][0])
32             {
33                 status=0;break;
34             }
35         }
36         if(status==1) arrayk[klen++]=arrayj[i][0];
37         status=1;
38         for(int j=0;j<klen;j++)
39         {
40             if(arrayk[j]==arrayj[i][1])
41             {
42                 status=0;break;
43             }
44         }
45         if(status==1) arrayk[klen++]=arrayj[i][1];
46     }
47     for(int i=0;i<n;i++)
48     {
49         /*
50         按照arrayj中比较的两个编号的电容数量,为arrayk数组排序
51         temp0/temp1为给出的两个编号在数组中的下标,EG:
52         temp0   temp1
53         (1        2)
54         (2        4)
55         */
56         int temp0=0,temp1=0;
57         for(int j=0;j<klen;j++)
58         {
59             if(arrayk[j]==arrayj[i][0])
60                 temp0=j;
61             if(arrayk[j]==arrayj[i][1])
62                 temp1=j;
63         }
64         if(temp0>temp1)
65         {
66             //将大的移到前面
67             int tmp=arrayk[temp0];
68             for(int k=temp0;k>0;k--)
69             {
70                 arrayk[k]=arrayk[k-1];
71             }
72             arrayk[temp1]=tmp;
73         }
74 
75 //        for(int z=0;z<n;z++)
76 //            printf("%d  ",arrayk[z]);
77 //        printf("\n");
78     }
79     int temp0=0,temp1=0;
80     for(int j=0;j<klen;j++)
81     {
82         if(arrayk[j]==a)
83             temp0=j;
84         if(arrayk[j]==b)
85             temp1=j;
86     }
87     if(temp0<temp1)
88         printf("1\n");
89     else if(temp0>temp1)
90         printf("-1\n");
91     else
92         printf("0\n");
93 
94     return 0;
95 }

 

posted @ 2018-04-02 18:39  第五  阅读(567)  评论(0)    收藏  举报