【技巧】数组作为另一个数组的下标

数组作为另一个数组的下标,这相当于统计了。。我目前有三处遇到了。

其一:

是笔试题里的,有个数组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\t",j); 
 	}
  }


其三:是在直方图里面,统计各个灰度值的个数的时候

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值