C_C程序设计李云峰第6章节利用指针编程幻灯片.pptVIP

C_C程序设计李云峰第6章节利用指针编程幻灯片.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PPT研究院 POWERPOINT ACADEMY * * * * * * 6.5.2 舞伴的搭配 如果boy[1]比girl[l]矮c以上,就可以不去考虑boy[1],而去考虑 boy[2]…boy[m]与girl[1]…girl[n] 的搭配情况。 同理,如果girl[1]比boy[1]]矮c以上,那么就只需考虑boy[1]…boy[m]与girl[2]…girl[n] 的搭配情况。 此外,boy[1]与girl[1]身高相差不超过c时,可以证明boy[1]与girl[1]在一起跳舞可以形成一组最优解。于是,就有了一个简单的贪心思想:能配搭时就组成舞伴,否则,将boy或girl的下标后移。 6.5.2 舞伴的搭配 4、程序实现 #include stdio.h #define maxn 1000 int boy[maxn+1], girl[maxn+1], m, n, c, ans; void sort(int *a, int size) //排序过程 { int i, j, t; for (i = 1;i=size-1;i++ ) for (j = i+1;j=size;j++ ) if (a[i]a[j]) { t= a[i];a[i]=a[j];a[j]=t;} } 6.5.2 舞伴的搭配 void ini t() { int i; scanf(%d%d%d, m, n, c); for (i = 1; i = m; i++ ) scanf(%d, boy[i]); for (i = 1; i = n; i++ ) scanf(%d, girl[i]); sort(boy,m); //将男孩按身高排序 sort(girl,n); //将女孩按身高排序 } 6.5.2 舞伴的搭配 void process() { int i=1, j=1; while (i=m j=n) { if (abs(boy[i]-girl[j])=c) { ans++;i++;j++;} else //身高不满足要求,就要换一个比较对象 { if (boy[i]girl[j]) i++; else j++; } } printf(%d, ans); } 6.5.2 舞伴的搭配 main() { ini t(); process(); return 0; } [运行程序] 输入信息? 输出信息? 请读者分析和思考。 6.5.3 猴子选大王 1、案例描述 山上有50只猴子要选大王,选举办法如下:所有猴子从1到50进行编号坐一圈,从第一号开始按顺序1,2,…,n连续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王,输出大王的编号。要求用指针编程。 2、案例分析 该问题使用数组比较方便,将数组元素按1到50赋值。出局的猴子赋0值,方便下一次计数。 6.5.3 猴子选大王 3、算法描述 此题不涉及复杂算法问题,编程的关键是数组的指针表示方法。例如,*(p+i)是p+i所指向的数据元素,即p[i];*(p+6)就是p[6]。 4、程序实现 # includestdio.h # includestdlib.h #define N 50 void main() { int i,k,m,n,num[N],*p; system(“cls”); printf(“\n报n号的猴子退出,输入n=”); 6.5.3 猴子选大王 scanf(“%d”,&n); p=num; for(i=0;iN;i++) *(p+i)=i+1; i=0;k=0;m=0; while(mN—1) { if(*(p+i)!=0) k++; if(k==n) { *(p+i)=0;k=0;m++;} i++; if(i==N) i=0; } while(*p==0) p++; printf(“The last one is NO:%d\n”,*p); } 6.5.4 约瑟夫问题 1、案例描述 已知n个人(编号分别为1,2,3,…,n)按顺时针方向围坐一圈,每人手中持有一个密码。开始时任选一个正整数作为报数的上限m,从编号为1的人开始报数,数到m的那个人出列,并将他手中的密码作为新的报数上

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档