码迷,mamicode.com
首页 > 其他好文 > 详细

2017.12.24(查找最接近元素等)

时间:2017-12-24 11:17:13      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:时间   center   bre   amp   text   str   mil   查找   blog   

2017.12.24

 贪心,分治综合习题(2)

1.查找最接近元素

思路:由题可知,n<=100000,m<=10000,如果每一个m都把这个非降序序列扫一遍的话,那么时间复杂的将要到达1010那么多,明显不合题意;所以,只能用二分查找来优化时间复杂度。

核心代码:

int left=1,right=n,mid,bz=0;
	while(left<right-1){
		bz=0;
		mid=(left+right)/2;
		if(k==num[mid]){
			printf("%d\n",k);
			bz=1;
			break;
		}
		else if(k>num[mid])
			left=mid;
		else if(k<num[mid])
			right=mid;
	}
	if(num[right]-k<k-num[left]&&bz==0){
		printf("%d\n",num[right]);
	}
	else if(num[right]-k>=k-num[left]&&bz==0){
		printf("%d\n",num[left]);
	}

状态:AC

2.全排列

思路:这个题目的数据范围不大,K<=6,所以可以使用没有任何优化的搜索。题目保证输入的字符串是已经排好序的,所以可以就可以把输入的字符串作为一个有序序列来使用。

核心代码:

void search(int n){
	int i,j;
	if(n==l){
		print();
		return;
	}
	for(i=0;i<l;i++){
		if(book[i]==0){
			book[i]=1;
			answer[n]=letter[i];
			search(n+1);
			book[i]=0;
		}
	}
	return;
}

状态:AC

2017.12.24(查找最接近元素等)

标签:时间   center   bre   amp   text   str   mil   查找   blog   

原文地址:http://www.cnblogs.com/yzyl-Leo-wey/p/8097402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!