题目 1190: 剔除相关数

时间限制: 1sec 内存限制: 128mb 提交: 612 解决: 272

题目描述

一个数与另一个数如果含有相同数字和个数的字符,则称两数相关。现有一堆乱七八糟的整数,里面可能充满了彼此相关的数,请你用一下手段,自动地将其剔除。

输入

每组数据前有一个n(<1000),表示跟随的整数p(0



输出

按从小到大的顺序输出非相关数,若没有非相关数,则输出none

样例输入复制

8
213 667 3 213 43 34 677 2
3
322 232 232
0

样例输出复制

2 3 667 677
none

新手,请多多关照。

代码如下:

#include<stdio.h>

#include<algorithm>

using namespace std;

int ws(int n)

{

int s=0;

while(n)

{

s++;

n=n/10;

}

return s;

}

int cm(int n,int m)

{

int c=ws(n);

int d=ws(m);

if(c!=d)

return 0;

int a[100];    //123

int b[100];

int i,j,k;

for(i=0;i<c;i++)

{

a[i]=n%10;

n=n/10;

    } 

sort(a,a+c);

for(j=0;j<d;j++)

{

b[j]=m%10;

m=m/10;

}

sort(b,b+d);

//功能把整数里面各个位数排列从大小在判断 各个位数有不相同的嘛

for(i=0;i<c;i++) 

    if(a[i]!=b[i])

{ return 0;

   break;

}

if(i>=c)

return 1;

}

int main(){

int n;

while(scanf("%d",&n)!=eof){

     if(n!=0){

int i;

int a[100];

int t=0;

int c[100];

int s=0;

for(i=0;i<n;i++)

scanf("%d",&a[i]);

int j;

for(i=0;i<n;i++)

    c[i]=a[i];   //建立新的数组存a数组所有元素

for(i=0;i<n;i++)

for(j=i+1;j<n;j++)

{    

if(cm(a[i],a[j]))

{

   c[i]=0;

   c[j]=0;      //将c数组相关数置为0

}    

}

sort(c,c+n);

    for(i=0;i<n;i++)

    if(c[i]!=0)

    {

    printf("%d ",c[i]);

    t=1;

}

if(t==0)

printf("none");

printf("\n");

}

}

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论