妖三欺


私信TA

用户名:s237834893

访问量:5796

签 名:

代码千万行,注释第一行

等  级
排  名 2554
经  验 2252
参赛次数 0
文章发表 17
年  龄 0
在职情况 学生
学  校 哈尔滨工程大学
专  业

  自我简介:

#include<stdio.h>
int rely(int x,int y)            //判断是否相关,相关则返回1,否则0
{
    int a[10],b[10],i=0,j=0;
    while(x)                     //这里要分别把要检验的数存储到两个数组中
    {
        a[i++]=x%10;
        x=x/10;
    }
    while(y)
    {
        b[j++]=y%10;
        y=y/10;
    }
    if(i!=j) return 0;        //开始检验相关性,位数不同不行
    else
    for(int m=0;m<i;m++)        
        for(int n=0;n<j;n++)
        {
            //printf("%d %d\n",a[m],b[n]);
            if(a[m]==b[n])   
            {
                a[m]=0;
                b[n]=0;
            }
        }
    for(int m=0;m<i;m++)
        for(int n=0;n<j;n++)
        {
            if(a[m]==0&&b[n]==0);
            else return 0;        //数字不同不行 
        }
    return 1;
}
int main()
{
    int n;
    while(scanf("%d",&n)&&n)
        {
            int a[1000],flag=0,temp,sum=0;        //sum是为了None的情况准备
            for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
            for(int i=0;i<n;i++)
                {
                    flag=0;                      //flag每次置0才能保证去除了所有的相关数
                    for(int j=i+1;j<n;j++)        //此处去除当前位以后的所有相关数
                        if(rely(a[i],a[j]))
                        {
                            a[j]=0;
                            flag=1;
                        }
                    if(flag)a[i]=0;              //去除当前位置相关数
                }
            for(int i=0;i<n-1;i++)                //来冒个泡
                for(int j=0;j<n-i-1;j++)
                {
                    if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
                }
            for(int i=0;i<n;i++)
            {
                if(a[i])
                printf("%d ",a[i]);
                sum=sum+a[i];
            }
            if(sum==0)printf("None");
            printf("\n");
        }
}


 

0.0分

6 人评分

  评论区

  • «
  • »