| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1334 人关注过本帖
标题:求助:约瑟环问题(C语言)
只看楼主 加入收藏
Huly
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-25
收藏
 问题点数:0 回复次数:2 
求助:约瑟环问题(C语言)
数据结构作业(可选)-- 约瑟环问题
Time Limit:1000 ms | Memory Limit:10000 KB
Submit:10 (6 users) | Accepted:3 (3 users)
Description
将m个孩子从1到m编上号,按序号围坐成一个圈,从1号孩子开始数,每数到n时,被数到的孩子即离开圈子,然后从下一个孩子开始,再从1开始数,如此不断地数下去,只到只剩下最后一个孩子,问剩下的孩子是几号?
Input
输入为一组整数对,每个整数对占一行,整数对的第一个整数表示m,即孩子的个数,第二个整数表示n,即被数到n的孩子将离开。
0<m<10000, n>0
输入以0 0作为结束。
Output
每组整数对输出一个结果整数,每个输出占一行。
最后一行输入0 0不产生输出。
Sample Input
8 3
5 2
0 0
Sample Output
7
3
搜索更多相关主题的帖子: C语言 约瑟 
2008-10-25 22:36
lisownjay
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-10
收藏
得分:0 
#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define size sizeof(List)

typedef struct list
  {
    int id;
    int code;
      struct list *next;
  }List;

List *creat()
  {
   List *p1,*p2,*L;
   p1=p2=(List *)malloc(size);
   p1->id=1;
   scanf("%d",&p1->code);
   L=NULL;
   printf(" -1 to exit\n");
    while(p1->code!=-1)
      {
    if(p1->id==1)
        L=p1;
      else
        {
          p2->next=p1;
          p2=p1;
          p1=(List *)malloc(size);
          scanf("%d\n",&p1->code);
          p1->id++;
         }
   p2->next=L;
   return(L);
 }

main()
{
    List *L,*p;
    int num,i;
    L=creat();
    printf("Input a num to start;\n");
    scanf("%d\n",&num);
    while(L->next!=L)
      {
    for(i=0;i<num;i++)
      { p=L;
        L=L->next; }
    num=L->code;
    printf("%4d\n",L->id);
    p->next=L->next;
    L=p;
      }
printf("The last code %4d,The last id %4d\n",L->code,L->id);
}
这是我自己写的,可能和你的原题不是很一样,但是思想是一样的,你可以参考一下
2008-10-26 13:41
Huly
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-25
收藏
得分:0 
谢谢你的回复!我会参考的!!
2008-10-27 16:49
快速回复:求助:约瑟环问题(C语言)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011185 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved