#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 人评分
C二级辅导-公约公倍 (C语言代码)浏览:2122 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:687 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:669 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:3392 |
川哥的吩咐 (C++代码)浏览:1008 |
母牛的故事 (C语言代码)浏览:435 |
字符串问题 (C语言代码)浏览:1503 |
淘淘的名单 (C语言代码)答案错误???浏览:593 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:749 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:702 |