• 谁买单,猴子选大王等类似题目不同解法!!!


    题目描述

    三五好友,相邀畅谈,围一圆桌,饭后报数,以决买单。从第一个人开始报数(从1到3报数)凡报到3的人就不用买单,退出圈子。问最后留下要买单的是原来第几号的人。

    输入

    多组测试数据,输入整个n( n < 50 ),表示n个人。

    输出

    输出买单的人。

    样例输入

    8

    样例输出

    7
    ---------------------------------------------------------------------------------------------
    题目比较简单,就是把一个个的数组找到一个数就向前移一个;
    直接上代码
    #include <cstdio>
    //#define _OJ_
    int main(int argc, char const *argv[]) {
    #ifndef _OJ_  //ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif

        int a[100];
        int i, j, n, cnt = 0;
        scanf("%d", &n);
        for(i = 1;i <= n; i++)//每个都按顺序赋值
        a[i] = i;
        i = 1;

          while(i <= n) {
          cnt++;
          if(cnt == 3) {
            for(j = i;j <= n; j++)//逐个向前移一个
            a[j] = a[j + 1];
            cnt = 0;    n = n - 1;
        }
        else
             i++;
             if(n == 1)    break;//n == 1结束
             if(i > n)    i = 1;//返回第一个
        }

        printf("%d ", a[1]);
        return 0;
    }
    -----------------------------------------------------------------------------------------------

    题目描述

    m只猴子要选大王,选举办法如下:所有猴子按照1..m编号站成一个圆圈,从1号开始按照1、2、3……n报数,凡报到n的猴子退出到圈外,如此循环,直到圆圈内只有一只猴子时,这只猴子为大王。 其中:0<m,n<100

    输入

    m和n。

    输出

    大王猴子的编号。

    样例输入

    4 2

    样例输出

    1

    ---------------------------------------------------------------------------------------------
    此题目和上面的题目大同小异,不过除了可以用循环来做之外学了数据结构还可以用循环链表来做;
    这样围成一个圈更加的形象;
    ------------------------------------------------------------------------------------------

    #include <cstdio>
    #include <cstdlib>
    #define _OJ_
    typedef struct Lnode
    {
        int data;
        struct Lnode *next;
    } Lnode, *Linklist;
     
    void Creat_List(Linklist L, int n)
    {
        int i;
        Linklist p, head;
        head = L;
        L->data = 1;
        for(i = 2;i <= n; i++) {
        p = (Linklist) malloc (sizeof(Lnode));
        p->data = i;
        head->next = p;
        head = p;
        }
        head->next = L;
         
    }
     
    void Delete_List(Linklist L)
    {
        L->next = L->next->next;
    }
     
    /*void fun(Linklist L, int n)
    {
        //printf("n==%d ",n);
        int i = 1;
        Linklist p;
        p = L;
            while(i != n - 1)
            {
            //printf("%d ",p->data);
            i++;//printf("i==%d ",i);
            p = p->next;
            }
            Delete_List(p);
    }*/
     
     
     
    int main(int argc, char const *argv[]) {
    #ifndef _OJ_  //ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    #endif
     
        int i = 1, cnt = 0;
        Linklist L, head, p;
        int m, n;
        L = (Linklist) malloc (sizeof(Lnode));
        head = L;
        scanf("%d %d", &m, &n);
        Creat_List(L,m);
        while (L->next != L)
        {
            if(i == n - 1)
            {
                Delete_List(L);
                L = L->next;
                i = 1;
            }
            else
            {
                i++;
                L = L->next;
            }
             
        }
        printf("%d ", L->data);
        return 0;
    }
     -----------------------------------------------------------------------------------------------------------------------







  • 相关阅读:
    SQliteDatabase详解
    Eclipse常用快捷键
    Android 省市区三级联动
    关于安卓9patch图片的探究
    9patch
    Day3_UI布局--FXQ
    day2-UI布局
    Day01_扩展_Genymotion模拟器的使用
    React Examples
    React项目结构
  • 原文地址:https://www.cnblogs.com/airfand/p/5005796.html
Copyright © 2020-2023  润新知