[解题报告]11942 - Lumberjack Sequencing
题目大意
题目原文:http://uva.onlinejudge.org/external/119/11942.pdf
背景:
有一个工头与一群伐木工,工头很喜欢找伐木工们的麻烦,他会要求伐木工们以十个一组按照他们的胡子长短依序排成一列。
你请写一个程序判断伐木工是否以由长到短,或以由短到长的顺序排成一列。不会有人的胡子一样长
输入
第一列有一 个整数N(0 < N < 20)表示测试数据的组数,接下来有N列,每列有10个相异的正整数表示每人胡子的长短。
输出
请 以"Ordered"表示有照顺序排列,以"Unordered"表示没有照顺序排列,第一列请输出"Lumberjacks:"。
Sample Input
3 13 25 39 40 55 62 68 77 88 95 88 62 77 20 40 10 99 56 45 36 91 78 61 59 54 49 43 33 26 18
Sample Output
Lumberjacks: Ordered Unordered Ordered
算法:
我的算法是讲输入的数字进行排序,分别从小到大和从大到小,然后和原来的数据进行对比得出结果。
代码:
这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确。
#include<stdio.h> int main(void) { int a[10],b[10],c[10]; int n,i,j,l,k,m,swap,temp; scanf("%d",&n); printf("Lumberjacks:\n"); while(n--) { for(i=0;i<10;i++) { b[i]=0; c[i]=0; } m=k=l=0; temp=0; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { b[i]=a[i]; c[i]=a[i]; } for(i=0;i<10;i++) { swap=0; for(j=0;j<9;j++) if(b[j]>b[j+1]) { swap=1; temp=b[j+1]; b[j+1]=b[j]; b[j]=temp; } if(!swap)break; } for(i=0;i<10;i++) { l=9-i; c[l]=b[i]; } for(i=0;i<10;i++) if(a[i]-b[i]==0) k++; for(i=0;i<10;i++) if(a[i]-c[i]==0) m++; if(k!=10&&m!=10) printf("Unordered\n"); else printf("Ordered\n"); } return 0; }