博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法练习——聪明的情侣
阅读量:6578 次
发布时间:2019-06-24

本文共 1976 字,大约阅读时间需要 6 分钟。

一、聪明的情侣

  酋长的女儿艾丽要出嫁了,按以往的风俗习惯,要搭个高台,台下是众多的求婚者,艾丽在台上扔束花,扔在台下谁身上,艾丽就得嫁给谁。
但她担心落不到心爱的雷蒙身上。艾丽私下约雷蒙商量如何是好。雷蒙想出了一个主意……艾丽便和父亲说:“我不愿意搭台撒花,这么多人来
,挤在一起乱哄哄的,没秩序。”父亲说,“不这样也可以,但结婚时要当场在人群中决定嫁给谁,不许指名,方法你自己定。”艾丽高兴的告
诉主持人如何行事。婚日来临,人群拥挤,主持人叫求婚者排成一队,雷蒙在队外数了数队列共有101人,于是自己找了个合适的位置也站在队列
中,主持人要大家从前往后1,2,1,2……报数,报单数的退出场外,余下的人位置不变,再重新从前往后1,2,1,2……报数,报单数的退场,
如此下去最后只剩一人,艾丽便嫁给谁。大家惊奇的发现最后剩下的竟是雷蒙。请用程序回答雷蒙刚开始站在队列中的第几个位置。
思路一:
   转换成链表,每次去除单数。最后剩下唯一的数,结束。
思路二:
   转换为数学问题。求人数中2的阶乘最大数。 64 属于数学口算。

#include "stdafx.h"#include 
#include
#define NULL 0struct People { int index; struct People* next;};struct People* head;struct People* hail;void init(int num){ struct People *p; head = (struct People*)malloc(sizeof(struct People)); hail = (struct People*)malloc(sizeof(struct People)); hail ->index = -1; hail ->next = NULL; head ->index = 0; head->next = hail; for(int i = num;i>0;i--){ p = (struct People*)malloc(sizeof(struct People)); p->index = i; p->next = head->next; head->next = p; }}void remove(struct People *people){ struct People * p; p = people->next; people ->next = p->next; //printf("remove : %d\n",p->index); free(p);}int search(){ struct People *p; int num = 102; while(head->next->next->index>0){ p = head; while(p->index>=0&&p->next->index>0){ remove(p); num--; p=p->next; } //printf("remain: %d\n",num); } return head->next->index;}void freeALL(){ struct People *p; while(head->next->index>0){ p = head->next; head->next = p->next; free(p); } free(head); free(hail);}/**第二种解题思路: 直接转换为数学问题,就是求 num中2的阶乘最大的double fun(int n){ return Math.Pow(2, Math.Floor(Math.Log(n, 2)));}*/int main(){ int last; init(102); last = search(); printf("最后一个数字是:%d",last); freeALL(); getchar(); return 0;}

 

转载于:https://www.cnblogs.com/zhuqingqin/p/5392265.html

你可能感兴趣的文章
Mysql问题集合。。。
查看>>
网络传输控制
查看>>
如何配置mugo自动下围棋
查看>>
rip的工作原理
查看>>
Web Service单元测试工具实例介绍之SoapUI
查看>>
[李景山php]每天laravel-20161120|MySqlConnector.php
查看>>
CentOS7源码编译安装FreeRadius3.17
查看>>
Redhat7/Centos7 修改默认启动内核方法二
查看>>
我的友情链接
查看>>
java基础语法注意点归纳总结
查看>>
node上HTML分析利器node-jquery
查看>>
利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm
查看>>
存储器系统课后习题参考答案
查看>>
CodeFile与CodeBehind的区别
查看>>
Ruby on rails初体验(一)
查看>>
CentOS 无法使用pstree命令
查看>>
rsync+inotify实现实时同步
查看>>
Android sdk 镜像服务器资源
查看>>
VS Python环境安装第三方包 pip改国内源
查看>>
TCP和UDP的区别
查看>>