#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 人评分