圆桌问题

原创 2006年06月06日 21:31:00
/*圆桌问题

编号为1——n的n个人围坐在圆桌前,从某个人开始报数,以1开始,报数为常数m的人离开桌子。
下个人接着从1开始报数,依次重复进行下去,直到全部人都离开桌子。
要求输出各位离开的编号次序。

*/

The most recent one on 2.May.2008, Does it make sense?
=================

#include <stdio.h>
#include <stdlib.h>


#define LENGTH 10
#define ANNOUNCER 4

int main(int argc, char **argv){
    int array[LENGTH];
    int len  = LENGTH;
    int i, j, left;
    for(i = 0; i< LENGTH; i++){//marks the position that is available
        array[i] = 1;
    }
   
    j = 0;

        for(i = 0; i< LENGTH; i = (i+1)%10){//loop until len == 1

            if(array[i] != 0){
                j++;//counter
            }
            if(j==ANNOUNCER){//reached 4, out
                array[i] = 0;//unmark
                len--;
                j = 0;
            }
            if(len == 1){
                break;
            }
        }
       
    for(i = 0;i<10; i++){
        if(array[i] != 0){
             printf("left: %d/n",i);
         }
    }   
   
}

the original post
===============

#include<stdio.h>

void main()
{
    int r[11]={1,2,3,4,5,6,7,8,9,10,11};/*11个人*/
    int i;
    int n=0; /*循环计数*/
    int m=0; /*统计出局人数*/
    int final; /*记录最后一个不为0的数的下标,即为最后剩下人的标号*/
    int final_pre;
    bs:;
    for(i=0;i<11;i++)
      if(r[i]!=0)
       {
          n++;
          final=i;
          if(n==4)/*报数到4的出局*/
          { r[i]=0;
            n=0;
            m++;
            final=final_pre;
          }
          final_pre=final;
       }
    if(m!=10)
        goto bs;

    printf("%d/n",r[final]);/*the only man in the world:*/
    getchar();
}
   

/*
感言:以前也作过这个题。
以前的代码:
#include
  void main()
  { static int a[9]={1,1,1,1,1,1,1,1,2};
   int i,m,n;
   n=0;
   m=0;
   bs:;
   for(i=0;i<9;i++)
   if(a[i]==1)
   {if(n==4)
    { n=0;/*报数*/
     a[i]=0;
    }
    else
     n++;
    }
   else
    { if(a[i]==0)
     {m++; /*统计出局的人数*/
      a[i]=66;/*避免重复计数*/
     }
     if(a[i]==2)
     {if(m==7)/*只剩下一个人了*/
       break;
      else
       goto bs;
     }
  
   }
  for(i=0;i<9;i++)
  if(a[i]==1)
   printf("%d/n",i);
  }

这次的控制语句做的好些。并且用了final,final_pre。就不用去循环检查了。这样看这爽。虽然效率不一定提高能够

*/
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

圆桌问题

圆桌问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Sub...

【网络流24题】圆桌问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 这道题的模型应该是有一种专业名称的,但是那都没用,思路才是最关键的。 我们...

网络流24题之圆桌问题

二分图多重最大匹配: 在二分图最大匹配中,每个点(不管是X方点还是Y方点)最多只能和一条匹配边相关联,然而,我们经常遇到这种问题,即二分图匹配中一个点可以和多条匹配边相关联,但有上限,或者说,Li表...

1487 圆桌问题

描述 圆桌问题 编号为1—n的n个人围坐在圆桌前,从第一个人开始报数,以1开始,报数为常数m的人离开桌子。n 下个人接着从1开始报数,依次重复进行下去,直到全部人都离开桌子。 要求输出各位离开...

圆桌问题 HDU 4841 PE。。。。

圆桌问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi...

圆桌问题

问题描述 假设有来自 n 个不同单位的代表参加一次国际会议。每个单位的代表数分别为ri,i=1,2,···,n。会议餐厅共有m张餐桌,每张餐桌可容纳ci(i=1,2, ···,m)个代表...

圆桌问题【二分图多重匹配】网络流24题

? 问题描述: 假设有来自 n 个不同单位的代表参加一次国际会议。每个单位的代表数分别为 n i r i , , 2 , 1 ,  = 。会议餐厅共有 m 张餐桌,每张餐桌可容纳 ) , , 2 ,...

圆桌问题[网络流24题之5]

问题描述:假设有来自 n n 个不同单位的代表参加一次国际会议。每个单位的代表数分别为 ri,i=1,2,...,n r_i,i=1,2,...,n 。会议餐厅共有 m m 张餐桌,每张餐桌可容...

圆桌问题 二分多重匹配+输出解

题目描述 Description 假设有来自n 个不同单位的代表参加一次国际会议。每个单位的代表数分别为 ri ni , =1,2,, 。会议餐厅共有m张餐桌,每张餐桌可容纳ci( ...

网络流24题5 圆桌问题

问题描述假设有来自 n 个不同单位的代表参加一次国际会议。每个单位的代表数分别为ri, i=1,2,…,n。会议餐厅共有 m张餐桌,每张餐桌可容纳 ci(i=1,2,…,m) 个代表就餐。为了使代表们...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)