Rumah >pembangunan bahagian belakang >C++ >Hantar Tugasan C++
Dalam tutorial ini kita perlu menulis algoritma untuk mencari jalan untuk lulus tugasan tanpa disedari oleh proctor. Setiap pelajar mesti menyerahkan tugasan kepada pengawas. Tugasan Pelajar A diberikan kepada Pelajar B, jadi Pelajar B mesti memulangkan/lulus tugasan kepada Pelajar A tanpa disedari oleh pengawas.
Semua pelajar duduk dalam barisan. Kita perlu mencari jalan untuk menghantar semula tugasan kepada pelajar A tanpa ditangkap. Pelbagai keperluan yang mereka boleh lulus tugasan adalah seperti berikut -
Pelajar A (di indeks i) boleh menghantar tugasan kepada jiran yang terletak di indeks (i- 1) dan (i+1)
Pelajar boleh menghantar, menerima atau memegang tugasan.
Pengawal sedang memantau semua pelajar dalam indeks [il, rl].
Pelajar tidak boleh menghantar atau menerima tugasan semasa mereka berada dalam lingkungan pengawas.
Pelajar tidak boleh menghantar atau menerima tugasan semasa mereka berada di bawah pengawasan pengawas. p>
Jika pelajar menyimpan tugasan mereka dalam julat ini, pengawas tidak akan menyedarinya.
Kami diberi empat input p, q, r, s, di mana p ialah jumlah bilangan pelajar dan q ialah jumlah langkah pemantauan oleh pengawas dari il kepada Nombor rl, c ialah kedudukan pelajar A, dan d ialah kedudukan pelajar A. Kedudukan pelajar B.
Setiap langkah (q) mempunyai tiga input -
Jumlah masa yang dipantau oleh pengawas untuk julat yang diberikan.
Di kawasan kurungan paling kiri, pengawas sedang memerhati.
Di kawasan pembendungan di hujung kanan, pengawas sedang memerhati. , menonton.
Memerlukan urutan keluaran 3 perkataan: "kiri", "kanan" dan "tahan", menunjukkan aktiviti pelajar (jika mereka menonton) melalui tugasan ( kiri / kanan) atau simpannya. Contohnya,
Input
8 3 2 7 1 4 6 2 1 8 3 5 6
🎜🎜🎜#🎜🎜🎜#🎜 # Right
Keep
Right
Right
Right
Right
Mengikut arahan ini, tugasan akan dipindahkan daripada pelajar di indeks 2 kepada pelajar di indeks 7 tanpa ditangkap.
Input5 1 1 3
1 2 5
Keep Right Right
Output#🎜🎟#rreee 🎜🎜#
Ikuti arahan ini dan tugasan akan dipindahkan daripada pelajar di indeks 1 kepada pelajar di indeks 3 tanpa ditangkap. Dekat dengan penyelesaianDalam keadaan tertentu, jika pengawas memantau dalam julat itu, sama ada pelajar sedang melakukan tugasan atau pelajar yang tugasan sedang diberikan. menghantar pelajar, maka pelajar itu akan kekal bersamanya untuk menyelesaikan tugasan tersebut. Jika tidak, dia menghantar bola kepada pelajar bersebelahan ke arah gol terakhir. Contoh#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
Atas ialah kandungan terperinci Hantar Tugasan C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!