【技巧】数组作为另一个数组的下标
数组作为另一个数组的下标,这相当于统计了。。我目前有三处遇到了。
其一:
是笔试题里的,有个数组a[100]存放了100个数,这100个数取自1-99,且只有两个相同的数,剩下的98个数不同。写一个搜索算法找出相同的那个数的值(注意空间效率和时间效率要尽可能低)
这题目,我能整出来的是暴力搜索了。。。。回来给小曹一看,他看了不到半分钟,说可以再申请一个100的数组,然后把题目中数组作为下标,然后看哪个是2的,就是了。
大概就是下面的代码:
//a[100]
int b[100]={0};
for(int i=0;i<100;i++)
{
b[a[i]]++;
}
for(int j=0;j<100;j++)
{
if(b[j]==2)
return j;
}
其二:还是一个笔试题:请在小于99999的正整数中找到符合下列条件的数,它既是完全平方数,又有两位数字相同,如144,676。
这题想了好久,没有啥好办法,遂百度了一下:
#include<stdio.h>
#include<math.h>
//函数havesamenum确认num是否满足条件
int havesamenum(int num)
{
int i=0,j;
char a[10] = {0};
while(num>0)
{
j=num%10;
a[j]+=1; <span style="color:#3333ff;">//这里也算是的</span>
num=num/10;
}
while(a[i]<=1&&i<10)
i++;
if (i<10)
return 1;
else
return 0;
}
void main(void)
{
int i,j,m;
m=(int)sqrt(99999);
for(i=1;i<m;i++)
{
j=i*i;
if (1==havesamenum(j))
printf("%6d ",j);
}
}
阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了