不敢死队问题
来源:互联网 发布:保定seo外包 编辑:程序博客网 时间:2024/04/28 10:45
不敢死队问题
Time Limit: 1000MS Memory limit: 65536K
题目描述
说到“敢死队”,大家不要以为我来介绍电影了,因为数据结构里真有这么道程序设计题目,原题如下:
有M个敢死队员要炸掉敌人的一个碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。
这题本来就叫“敢死队”。“谁都不想去”,就这一句我觉得这个问题也只能叫“不敢死队问题”。今天大家就要完成这道不敢死队问题。我们假设排长是1号,按照上面介绍,从一号开始数,数到5的那名战士去执行任务,那么排长是第几个去执行任务的?
输入
输入包括多试数据,每行一个整数M(0<=M<=10000)(敢死队人数),若M==0,输入结束,不做处理。
输出
输出一个整数n,代表排长是第n个去执行任务。
示例输入
962230
示例输出
26132
提示
#include <stdio.h>#include <string.h>#include <stdlib.h>struct node{ int data; struct node *next;};const int m = 5;struct node *creat(int n){ struct node *head, *tail, *q; head = (struct node *)malloc(sizeof(struct node)); head->next = NULL; head->data = 1; tail = head; int i; for(i = 2;i <= n;i++){ q = (struct node *)malloc(sizeof(struct node)); q->data = i; q->next = NULL; tail->next = q; tail = q; } tail->next = head; return head;}int merge(struct node *head){ int cnt = 0; struct node *r, *q; q = head->next; r = head; int flag = 0; int i; while(q->data != 1){ if(flag == 0){ for(i = 0;i < m-2;i++){ r = q; q = q->next; } flag = 1; }else { for(i =0;i < m;i++){ r = q; q =q->next; } } r->next = q->next; cnt++; } return cnt;}int main(){ int n; while(~scanf("%d", &n)&&n){ struct node *head; head = creat(n); int cnt = merge(head); printf("%d\n", cnt); } return 0;}
0 0
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 2056不敢死队问题
- 不敢死队问题
- 不敢死队问题
- 不敢死队问题
- (PHP+HTML+JavaScript+Css)一个简单爬虫的开发
- 数据结构复习-链表
- [C#基础]网络编程(三):protobuf-net
- 五子棋AI算法第八篇-重构代码
- 初探双向链表
- 不敢死队问题
- hdu4325 Flowers【树状数组区间更新单点求值 离散化】
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
- App架构经验总结
- [BZOJ2843]极地旅行社(LCT)
- hadoop源代码分析(二)从wordCount开始,剖析mapreduce的运行机制
- 想写一系列关于css draft的博客
- WPF中Border控件的属性介绍
- PHP记录 字符串 函数