• 综合实验:狐狸逮兔子


    实验要求:(一)问题描述
    围绕着山顶有10个圆形排列的洞,狐狸要吃兔子,兔子说:”可以,但必须找到我,我就藏于这10个洞中,你先到1号洞找,第二次隔1个洞(即3号洞)找,第二次隔2个洞(即6号洞)找,以后如此类推,次数不限.”但狐狸从早到晚进进出出了1000次,仍没有找到兔子.问:兔子究竟藏在那个洞里?
    (二)问题分析
    这实际上是一个反复查找线性表的过程.
    定义一个顺序表,用具有10个元素的顺序表来表示这10个洞.每个元素表示围绕山顶的一个洞,下标为洞的编号.对所有洞设置初始标志为1,然后通过1000次循环,对每次所进之洞修改标志为0,最后输出标志为1的洞,即兔子藏身的洞.
    (三)问题要求
    1.设计一种存储方式用于存储山洞,元素的下标表示山洞的编号,元素的值为1表示狐狸没有进过山洞,为0表示狐狸进过该山洞.
    2.为保持程序的通用性,山洞的数目和狐狸进出山洞的次数不一定为题设的10和1000,可由用户从键盘输入.
    3.要求编写函数模拟狐狸逮兔子的过程,并输出兔子可能的藏身之处.

    实验结果:
    #include
    #include
    #include<malloc.h>
    using namespace std;
    typedef struct node
    {
    int num;
    int temp;
    struct nodenext;
    }sqlist;
    int main()
    {
    void f(int n, int m);
    int n, m;
    cout << “请输入山洞的数目:”;
    cin >> n;
    cout << “请输入狐狸进出洞的次数:”;
    cin >> m;
    f(n, m);
    return 0;
    }
    void f(int n, int m)
    {
    sqlist
    head, *p1, p2, p3;
    int count = 0, j = 1, z;
    head = p2 = (sqlist
    )malloc(sizeof(sqlist));
    head->temp = 1;
    head->num = j;
    while (n > 1)
    {
    p1 = (sqlist
    )malloc(sizeof(sqlist));
    p2->next = p1;
    p2 = p1;
    p2->temp = 1;
    j++;
    p2->num = j;
    n–;
    }
    p3 = p1;
    p1->next = head;
    p1 = head;
    while (m > 0)
    {
    if (count == 0)
    {
    p1->temp = 0;
    count++;
    }
    else
    {
    p1->temp = 0;
    }
    count++;
    z = count;
    while (z > 0)
    {
    p1 = p1->next;
    z–;
    }
    m–;
    }
    p3->next = NULL;
    p1 = head;
    cout << “兔子可能在的洞口:”;
    while (p1->next != NULL)
    {
    if (p1->temp == 1)
    cout << p1->num << “号洞口” <<" ";
    p1 = p1->next;
    }
    }
    实验抓屏

    永远热泪盈眶。
  • 相关阅读:
    LightOJ
    Peter and Snow Blower
    Gena's Code
    nyoj139--我排第几个 (康拓展开)
    hdoj1394(归并排序)
    树状数组
    Poj 1113--Wall(凸集)
    hdoj1437 -- 天气情况
    hdoj1428 -- 漫步校园 (记忆化搜索)
    图像边缘检测
  • 原文地址:https://www.cnblogs.com/2021WGF/p/14253260.html
Copyright © 2020-2023  润新知