Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัส C ++ เพื่อดูว่าตารางสามารถเข้าถึงได้โดยสมบูรณ์หรือไม่


สมมติว่าเราได้รับตารางที่มี 2 แถวและ n คอลัมน์ หุ่นยนต์อยู่ที่ตำแหน่ง (0, 0) ในตารางและต้องการเยี่ยมชม (1, n - 1) โดยไปที่เซลล์ที่อยู่ติดกันและมุมไปยังตำแหน่งปัจจุบัน เราได้รับตารางในอาร์เรย์ของสตริง เซลล์จะถูกบล็อกหากมีการทำเครื่องหมาย '#' และสามารถเข้าถึงได้หากมีการทำเครื่องหมาย '.' เราต้องค้นหาว่าหุ่นยนต์สามารถเยี่ยมชมเซลล์ (1, n - 1) จากเซลล์ (0, 0) ได้หรือไม่

ดังนั้น หากอินพุตเป็น n =4, grid ={".##.", "...."} ผลลัพธ์ก็จะเป็นไปได้

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

flag := 1
for initialize i := 0, when i < n, update (increase i by 1), do:
   if grid[0, i] is same as '#' and grid[1, i] is same as '#',
then:
   flag := 0
if flag is same as 0, then:
   print("Not Possible.")
Otherwise
   print("Possible.")

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int n, string grid[]) {
   int flag = 1;
   for(int i = 0; i < n; i++){
      if(grid[0].at(i) == '#' && grid[1].at(i) == '#'){
         flag = 0;
      }
   }
   if (flag == 0)
      cout<<"Not Possible.";
   else
      cout<<"Possible.";
}
int main() {
   int n = 4;
   string grid[] = {".##.", "...."};
   solve(n, grid);
   return 0;
}

อินพุต

4, {".##.", "...."}

ผลลัพธ์

Possible.