注意事项
- 看起来很简单但是实际的判断比较难吧。(最起码对于我一个渣渣来说= =)。我的思路主要在于两点:一个是必定有三对,另一个是必定能首尾相连。
体会
- 一开始又犯了没想好就动手的大问题,推到好几次。下次一定一定吸取啊教训。
- 一开始是轻输入,重判断。最后弄得判断复杂到自己看不懂。最后还学了qsort(),毕竟渣渣没学过C++。
- 这个周末要赶快学C++了,现在的课程作业少到没有,也许再也没有这种好的机会啦 :-)。
还是附上渣渣的代码,纪念一下第一次用qsort()。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int a, b;
} inputq;
int com(const void *m, const void *n)
{
inputq *c = (inputq *)m;
inputq *d = (inputq *)n;
if (c->a == d->a)
return d->b - c->b;
return d->a - c->a;
}
int main(void)
{
inputq input[6];
int count1, count2, flag, temp;
while (scanf("%d %d", &input[0].a, &input[0].b) == 2)
{
flag = 0;
count2 = 0;
for (count1 = 0; count1 < 6; count1++)
{
if (flag == 0)
flag = 1;
else
scanf("%d %d", &input[count1].a, &input[count1].b);
if (input[count1].a < input[count1].b)
{
temp = input[count1].a;
input[count1].a = input[count1].b;
input[count1].b = temp;
}
}
qsort(input, 6, sizeof(inputq), &com);
for (count1 = 0; count1 < 3; count1++)
{
if (input[count1 * 2].a != input[count1 * 2 + 1].a ||
input[count1 * 2].b != input[count1 * 2 + 1].b)
count2 = 1;
}
if (input[0].b == input[4].a &&
input[0].a == input[2].a &&
input[2].b == input[4].b && !count2)
printf("POSSIBLE\n");
else
printf("IMPOSSIBLE\n");
}
return 0;
}
340

被折叠的 条评论
为什么被折叠?



