闪光体i


私信TA

用户名:uq_45472242551

访问量:2194

签 名:

等  级
排  名 699
经  验 3927
参赛次数 0
文章发表 12
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

题目 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分

2 人评分

  评论区

  • «
  • »