标签:arc 代码 clu \n key printf bin amp color
分治法的基本思想:
将一个问题规模为n的问题分解成k个规模较小的子问题,这些子问题互相独立且与原问题相同。用递归的方式解这些子问题,将子问题的解合并得到原问题的解。
二分查找:
就是将一个序列(排好序的)分成两部分,如果a[mid]==key就返回mid,若大于就搜索左边,否则搜索右边。
题目描述:
第一行输入n;
第二行输入n个整数;
第三行输入m;
然后输入m个整数,分别判断该数是否在n个整数中,若在输出Yes,否则输出No;
代码实现如下:
#include <stdio.h> int n; int binarySearch(int a[],long key) { int left = 0; int right = n; while(left<=right) { int mid = (left+right)/2; if(a[mid]==key) { return mid; } else if(a[mid]<key) { left = mid+1; } else { right = mid - 1; } } return -1; } int main() { int array[10001]; int i; int m; long q; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&array[i]); scanf("%d",&m); while(m--) { scanf("%ld",&q); if(binarySearch(array,q)>=0) printf("Yes\n"); else printf("No\n"); } return 0; }
标签:arc 代码 clu \n key printf bin amp color
原文地址:https://www.cnblogs.com/kmxojer/p/9939619.html