题目 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 人评分
大神老白 (C语言代码)浏览:768 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1485 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:702 |
【出圈】 (C语言代码)浏览:824 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1177 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:467 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:631 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:1024 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:593 |
字符逆序 (C语言代码)浏览:506 |