2011年3月21日

摘要: 【1】给一系列数:a1,a2,a3,...,an,要求找出其中2个数ai,aj,使得ai+aj=X,算法时间复杂度为:O(nlogn)。思路:先排序,采用快排。在设置2个指针low、high,分别指向第一个、最后一个数,然后向中间扫描靠拢,遇到a[low]+a[high]就输出。直到low=high。参考代码:#include<stdio.h>#define MAXLEN 1000int partition(int a[],int low,int high){ int pivotkey=a[low]; while(low<high){ while(low<high&am 阅读全文
posted @ 2011-03-21 15:28 江南烟雨hust 阅读(292) 评论(0) 推荐(0)
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2203AC代码:#include<stdio.h>#include<string.h>#define MAXLEN 100005char s1[MAXLEN],s2[MAXLEN];int IsSubset(int len1,int len2){ int i,j,k; for(i=0;i<len1;i++){ if(s1[i]==s2[0]){//遇到字符与s2首字符相等; j=i+1; k=1; while(k<len2&&s1[j]==s2[k]& 阅读全文
posted @ 2011-03-21 14:23 江南烟雨hust 阅读(205) 评论(0) 推荐(0)

导航