ZOJ 2481 C++ AC

来源:互联网 发布:java调用本类中的方法 编辑:程序博客网 时间:2024/05/30 13:42

//////////////////////////////////////////////////////////////////
//    ZOJ:2481
//    要求:对输入数字进行排列然后去除重复的数字并输出
//    排序用的是冒泡
/////////////////////////////////////////////////////////////////
#include "stdio.h"

int main()
{
    int n;
    int i;
    int a[200] = {0};

    while (scanf("%d", &n) && n != 0)
    {
        for (i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        //用冒泡排序法排序
        int j, k, flag = 1;

        for (j = 0; j < n - 1 && flag != 0; j++)
        {
            flag = 0;

            for (k = 0; k < n - j - 1; k++)
            {
                int temp;

                if (a[k] > a[k + 1])
                {
                    temp = a[k];
                    a[k] = a[k + 1];
                    a[k + 1] = temp;
                    flag = 1;
                }
            }
        }
       
        int x;
        int m = n;
        //去除重复的数字
        for (x = 0; x < m;)
        {
            if (a[x] == a[x + 1])
            {
                int y;
               
                for (y = x + 1; y < m; y++)
                {
                    a[y] = a[y + 1];
                }
               
                x = 0;
                m--;
            }
            else
            {
                x++;
            }
        }
               
        int l;

        for (l = 0; l < m; l++)
        {
            if (l != m - 1)
            {
                printf("%d ", a[l]);
            }
            else
            {
                printf("%d", a[l]);
            }
        }

        printf("/n");

    }

    return 0;
}