美文网首页
BIT-CS-2001年复试机试(A)(约瑟夫环链表法)

BIT-CS-2001年复试机试(A)(约瑟夫环链表法)

作者: 小白之白小明 | 来源:发表于2019-01-27 23:02 被阅读1次

1、编写程序,计算下列分段函数 y=f(x)的值。

y= -x+2.5,0<= x <2

y=2-1.5(x-3)(x-3),2<= x <4

y=x/2-1.5,4<= x <6。

#include<iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    if (0 <= n&&n < 2)
        cout << 2.5 - n;
    else if (n >= 2 && n < 4)
        cout << 2 - 1.5*(n - 3)*(n - 3);
    else if (n <= 4 && n < 6)
        cout << n*0.5 - 1.5;
    system("pause");
    return 0;
}

2、编写程序,读入一个整数 N。若 N 为非负数,则计算 N 到 2N 之间的整数和;若 N 为一个负数,则求 2N 到 N 之间的整数和。

#include<iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    long long int sum;
    if (n >= 0)
        sum = (n+1)*(n + 2 * n) / 2;
    else
        sum = (1-n)*(n + 2 * n) / 2;
    cout << sum;
    system("pause");
    return 0;
}

3、设 N 是一个四位数,它的 9 倍恰好是其反序数(例如:1234 的反序数是 4321),求 N 的值。

#include<iostream>
using namespace std;
int main() {
    for (int n = 1000; n <= 9999; n++) {
        long int m = n * 9;
        int a = n / 1000;
        int b = n / 100 - a * 10;
        int c = n / 10 - a * 100 - b * 10;
        int d = n % 10;
        int aa = m / 1000;
        int bb = m / 100 - aa * 10;
        int cc = m / 10 - aa * 100 - bb * 10;
        int dd = m % 10;
        if (a == dd&&b == cc&&c == bb&&d == aa)
            cout << n << endl;
    }
    system("pause");
    return 0;
}

4、N 个人围成一圈顺序编号,从 1 号开始按 1、2、 3 顺序报数,报 3 者退出圈外,其余的人再从 1、2、 3 开始报数,报 3 的人再退出圈外,依次类推。请按退出顺序输出每个退出人的原序号。要求使用环形链表编程。
即约瑟夫环问题。

#include<iostream>
using namespace std;
struct lnode {
    int num;
    lnode *next;
};
int main() {
    lnode *temp,*p;
    lnode *head = new lnode;    //初始化链表
    head->num = 1;
    p = head;
    p->next = NULL;
    int n;
    cin >> n;
    for (int i = 2; i <= n; i++) {
        temp = new lnode;
        temp->num = i;
        p->next = temp;
        p = temp;
        p->next = NULL;
    }
    p->next = head;  //成环
    p = head;
    int i = 1;
    while (n != 0) {
        if (i % 3 == 0) {
            cout << p->num << " ";
            head->next = p->next;
            i = 1;
            p = head->next;
            n--;
        }
        i++;
        head = p;
        p = p->next;
    }

    system("pause");
    return 0;
}

相关文章

  • BIT-CS-2001年复试机试(A)(约瑟夫环链表法)

    1、编写程序,计算下列分段函数 y=f(x)的值。 y= -x+2.5,0<= x <2 y=2-1.5(x-3)...

  • 算法面经---单向循环链表(解决约瑟夫问题)

    单向循环链表--解决约瑟夫问题 一、单向循环链表的应用场景 1.1 问题描述 Josephu(约瑟夫、约瑟夫环) ...

  • BIT-CS-2001年复试机试(B)

    1、请输入高度 h,输出一个高为 h,上底边长为 h的等腰梯形(例如 h=4,图形如下)。 2、请编写一个程序,从...

  • 数据结构与算法整理

    (1)链表的技巧 快慢指针(找环,环入口,环长度) 双指针(倒数K个节点) 合并链表(递归求解) 约瑟夫环(环形链...

  • 数据结构2:链表,树的基本介绍

    7.链表(LinkedList) 7.1 定义 7.2 链表实现图 7.3约瑟夫环问题 7.4 如何快读找到...

  • 约瑟夫环(单循环链表)

    问题描述: m个人围成一个圈,指定一个数字n,从第一个人开始报数,每轮报到n的选手出局,由下一个人接着从头开始报,...

  • 32.圆圈中最后剩下的数

    约瑟夫环的问题:分析:利用std::list 弄一个链表,代替圆圈;但是list不是成环的,所以每次迭代器遍历到尾...

  • 约瑟夫环

    复习一下关于约瑟夫环的实现原理: 如果用C来写的话,也会有许多的方法,比如1:采用链表(双向链表)2:递归3:队列...

  • 循环链表及线性表的应用

    循环链表的应用之约瑟夫环问题以及线性表总结之顺序表与链表的比较 1.1问题说明 问题描述:编号为1,2,···,n...

  • 约瑟夫环问题

    约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围...

网友评论

      本文标题:BIT-CS-2001年复试机试(A)(约瑟夫环链表法)

      本文链接:https://www.haomeiwen.com/subject/hazgjqtx.html