[解题报告]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;
}

 

 

 

posted @ 2013-02-22 15:25  乱七八糟 。  阅读(514)  评论(0编辑  收藏  举报