Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में एक बोर्ड में युद्धपोत

मान लीजिए हमारे पास एक 2D बोर्ड है, तो हमें गिनना होगा कि उसमें कितने युद्धपोत हैं। युद्धपोतों को 'X' प्रतीक के साथ दर्शाया जाता है, खाली स्लॉट को '.' से दर्शाया जाता है। हम इन नियमों को मान सकते हैं -

  • आपको एक मान्य बोर्ड मिलता है, जो केवल युद्धपोतों या खाली स्लॉट से बना होता है।

  • युद्धपोतों को केवल क्षैतिज या लंबवत रखा जा सकता है। दूसरे शब्दों में, वे केवल 1xN (1 पंक्ति, N स्तंभ) या Nx1 (N पंक्तियाँ, 1 स्तंभ) के आकार से बने हो सकते हैं, जहाँ N किसी भी आकार का हो सकता है।

  • दो युद्धपोतों के बीच कम से कम एक क्षैतिज या लंबवत सेल अलग होता है - कोई आसन्न युद्धपोत नहीं हैं।

तो अगर बोर्ड ऐसा है:

X . . X
. . . X
. . . X

तब आउटपुट 2 होगा, क्योंकि दो युद्धपोत हैं।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • उत्तर:=0, एन:=पंक्ति गणना और एम:=कॉलम गणना

  • छठी पंक्ति के लिए

    • jth कॉलम के लिए

      • अगर बोर्ड [i, j] डॉट है, तो अगले पुनरावृत्ति के लिए जाएं

      • अगर मैं> 0 और बोर्ड[i - 1, j] ='X', तो अगले पुनरावृत्ति के लिए जाएं

      • अगर j> 0 और बोर्ड[i, j-1] ='X', तो अगले पुनरावृत्ति के लिए जाएं

      • 1 तक बढ़ाएँ

  • वापसी उत्तर

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int countBattleships(vector<vector<char>>& board) {
      int ans = 0;
      int n = board.size();
      int m = board[0].size();
      for(int i = 0; i < n; i++){
         for(int j = 0; j < m; j++){
            if(board[i][j] == '.')continue;
            if(i > 0 && board[i - 1][j] == 'X')continue;
            if(j > 0 && board[i][j - 1] == 'X')continue;
            ans++;
         }
      }
      return ans;
   }
};
main(){
   vector<vector<char>> v = {{'X','.','.','X'},{'.','.','.','X'},{'.','.','.','X'}};
   Solution ob;
   cout << (ob.countBattleships(v));
}

इनपुट

[["X",".",".","X"],[".",".",".","X"],[".",".",".","X"]]

आउटपुट

2

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. बोर्ड को C++ में वर्गों में काटने की न्यूनतम लागत

    अवधारणा मान लीजिए कि लंबाई p और चौड़ाई q का एक बोर्ड दिया गया है, हमें इस बोर्ड को p*q वर्गों में तोड़ने की आवश्यकता है ताकि तोड़ने की लागत कम से कम हो। इस बोर्ड के लिए हर किनारे के लिए कटिंग कॉस्ट दी जाएगी। संक्षेप में, हमें काटने के ऐसे क्रम का चयन करने की आवश्यकता है जिससे लागत कम से कम हो। उदाह

  1. Linux पर C++ का सबसे अच्छा IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। Linux पर C++ के लिए एक भी सर्वश्रेष्ठ IDE नही