12 2011 档案

摘要:/*编写函数itob(n,s,b),将整数n转换为以b为底的数,并将结果以字符的形式保存到字符串s中。例如,itob(n,s,16)把整数n格式化成十六进制整数保存在s中。*/#include<stdio.h>#define MAX 50void itob(int n,char s[],int b){ int i,j,sign; void reverse(char s[]); if((sign=n)<0) n=-n; i=0; do{ j=n%b; s[i++] = (j<=9) ? j+'0' : j+'a'-10; }while((n 阅读全文
posted @ 2011-12-17 23:20 四月不留 阅读(1489) 评论(0) 推荐(0)
摘要:Shell排序算法是D.L.Shell 于1959年发明的。其基本思想是:先比较距离远的元素,而不是简单交换排序算法那样先比较相邻的元素。这样可以快速减少大量的无序情况,从而减轻后续的工作。被比较的元素之间的距离逐步减少,直到减少为1,这时排序变成了相邻元素的互换。/*shellsort:sort v[0]...v[n-1] into increasing order*/#include<stdio.h>void shellsort(int v[],int n){int gap,i,j,temp;for(gap=n/2;gap>0;gap/=2)for(i=gap;i< 阅读全文
posted @ 2011-12-06 19:09 四月不留 阅读(407) 评论(0) 推荐(0)
摘要:原是4人过桥,ABCD要单独过桥分别需要用时1分、2分、5分、10分,过桥需要灯(只有一盏),一次只能2人一起过(意味着需要有人送灯回来),过桥时间已用时多的人为准,问如何在17分钟内让四人全部通过。答案是A和B先过,A回来,CD再过,B回来,AB第二次过。17秒完成!用C语言拓展成n人过桥,过桥时间自定,求过桥最短用时的方案。对此,可以简化问题,分步解决。先解决最少时间过桥的问题。好好理解贪心法:1)当人数<3时,直接过2)当人数=3时,我们假设过河时间是从小到大的a,b,c (后期排列的问题易解决),显然用最小的来送灯(c+a+b<c+b+b)3)当人数=4时,a,b,c,d( 阅读全文
posted @ 2011-12-04 10:46 四月不留 阅读(835) 评论(0) 推荐(0)