题目 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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复