编写一个函数F(N,a),N:长整数,a长整形指针数组名称.
F(N,a)函数 从低到高获取N各位数字(不停除10取余数),余数是i,置位 a[i]=1;
主函数中X,Y.定义数组p[10],q[10],长整形数X,Y.
输入:用输入函数获取两个整数.
判断:分别用 X,p 和Y,q调用F.
打印:i从0循环到9,如果p[i]和q[i]均等于1,输出i.
实现自己做吧...
这个算法的运行时间是输入数字位数的线性时间.不需要循环嵌套.
比算出一个数的一位,然后循环在第二个数中判断相等效率高.
设 两数分别为J位和K位,第一种算法,循环J+K次.
第二种算法,循环为J*K次.
第一种算法的缺点是 打印出的数字顺序不是在第一个数中出现的顺序.
不能用数组。。我们还没学queue是什么 QAQ
追答要管输出顺序吗?
#include
int vis,first=1;
void chk(int a,int b)
{
do{
vis|=1
int chk(int a,int i)
{
do{
if(a%10==i)
return 1;
a/=10;
}while(a);
return 0;
}
int main()
{
int a,b,i;
int first=1;
scanf("%d%d",&a,&b);
for(i=0;i<=9;i++)
if(chk(a,i)&&(chk(b,i)==0))
{
if(first)
first=0;
else
putchar(' ');
putchar(i+'0');
}
if(first)
printf("the same number");
return 0;
}//要管输出顺序