在本教程中,我们必须编写一个算法来找到一种在不被监考人员发现的情况下通过作业的方法。每个学生都必须向监考人员提交作业。学生 A 的作业是交给学生 B 的,因此学生 B 必须在监考人员注意到的情况下将作业返回/传递给学生 A。
所有学生都坐在队列中。我们需要找到一种方法将作业传回给学生A而不被抓住。他们可以通过作业的各种要求如下 -
学生 A(在索引 i 处)可以将作业传递给位于索引处的邻居(i- 1) 和 (i+1)
学生可以提交、接受或保留作业。
监考人员正在监视索引[il, rl]中的所有学生。
当学生在监考人员监视范围内时,他们无法发送或接收作业。
当学生处于监考人员监视范围内时,他们无法发送或接收作业。 p>
如果学生在该范围内保留作业,监考人员不会发现他们。
我们是给定四个输入 p、q、r、s,其中 p 是学生总数,q 是监考员从 il 到 rl 进行监视的总步数,c 是学生 A 的位置,d 是学生 A 的位置。学生 B 的位置。
每个步骤 (q) 有三个输入 -
监考人员监视的总时间给定的范围。
在最左边的包含范围内,监考人员正在观看。
在最右边的包含范围内,监考人员正在观看。 ,正在观看。
需要 3 个单词的输出序列:“左”、“右”和“保持”,表示学生的活动(如果他们正在观看)通过作业(左/右)或保留它。例如,
输入
8 3 2 7 1 4 6 2 1 8 3 5 6
输出
Right Keep Right Right Right Right
解释
按照这些说明,作业将从索引 2 的学生传到索引 7 的学生,而不会被捕获。
输入
5 1 1 3 1 2 5
输出
Keep Right Right
解释
按照这些说明,作业将从索引 1 的学生传到索引 3 的学生,而不会被捕获。
在给定实例中,如果监考人员在该范围内监视,无论是当前正在做作业的学生还是要向其发送作业的学生,那么该学生将保留和他一起完成那个任务。否则,他将球传给最终目标方向的相邻学生。
#include <bits/stdc++.h> using namespace std; void solve(int p, int q, int r, int s, long t[], int l[], int ar[]){ int dir; string val; if (r < s) { dir = 1; val = "Right"; } else { dir = -1; val = "Left"; } string answer = ""; int i = 0, current = r; long tim = 1; while (1) { if (i < q && tim == t[i]) { if ((current >= l[i] && current <= ar[i]) || (current + dir >= l[i] && current + dir <= ar[i])) { answer += "Keep\n"; tim++; i++; continue; } i++; } current += dir; answer += val+"\n"; tim++; if (current == s) break; } cout << answer << endl; } int main(){ int p = 8, q = 3, r = 2, s = 7; long t[q + 2] = { 1,2,3 }; int l[q + 2] = { 4,1,5 }; int ar[q + 2] = { 6,8,6 }; solve(p, q, r, s, t, l, ar); return 0; }
Right Keep Right Right Right Right
在本教程中,我们学习了编写一种算法,以找到一种在不被监考人员发现的情况下通过作业的方法以及 C++ 代码。我们还可以用java、python和其他语言编写这段代码。上述算法是竞技性编码竞赛的重要算法。这个问题包含一个现实生活中的问题,我们通过C++代码解决了这个问题。我们希望本教程对您有所帮助。
以上是提交C++作业的详细内容。更多信息请关注PHP中文网其他相关文章!