• 链表--循环链表


    不敢死队问题

    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<stdlib.h>
    
    	 struct node{
    		int data;
    		struct node *next;
    	};
    
    	 struct node *creat(int n)
    	 {
    		struct node *head, *tail, *p;
    		head = (struct node *)malloc(sizeof(struct node));
    		head->next = NULL;
    		tail = head;
    		for(int i=1; i<=n; i++)
    		{
    			p = (struct node *)malloc(sizeof(struct node));
    			p->next = NULL;
    			p->data = i;
    			tail->next = p;
    			tail = p;
    		}
    		tail->next = head->next;//使最后的的一个节点指向第一个实际结点,成环。
    		free(head);
    		return tail->next;	
    	 }
    
    	void sel(struct node *head, int m, int n)
    	{
    		int num =0; 
    		int count = 0;//出去执行任务的人数
    		struct node *p, *q;//前驱指针, 后继指针
    		q = head;
    
    		while(q->next != head)
    			q = q->next;
    
    		while(1)
    		{
    			p = q->next;
    			num++;
    			if(num%m == 0)
    			{
    				q->next = p->next;
    				count++;
    				if(p->data == 1)
    				{
    					printf("%d
    ", count);
    					break;
    				}
    				free(p);
    			}
    			else
    				q = p;
    		}
    	}
    
    	 int main()
    	 {
    		int n, i, j;
    		struct node *head;
    		while(~scanf("%d", &n))
    		{
    			if(n == 0)
    				break;
    		head = creat(n);
    		sel(head, 5, n);
    		}
    		return 0;
    	 }


    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    在eclipse中API的封装和调用
    冒泡排序
    java中阻止类的继承
    java中数组复制的两种方式
    ssh框架搭建出现的异常: class com.my.entity.user not found while looking for property: id
    ssh框架中struts.xml 的配置参数详解
    线程的五种状态
    Sql Server 分页
    window.opener 子窗体操作父窗体
    贪心算法--汽车加油问题
  • 原文地址:https://www.cnblogs.com/6bing/p/3931254.html
Copyright © 2020-2023  润新知