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

C++ में 2D ग्रिड को शिफ्ट करना


मान लीजिए हमारे पास m x n आकार का एक 2D ग्रिड है। हमारे पास एक और वेरिएबल k है। हमें ग्रिड को k बार शिफ्ट करना है। शिफ्ट ऑपरेशन निम्नानुसार होगा

  • ग्रिड G[i, j] पर तत्व G[i, j + 1] पर चला जाता है

  • ग्रिड G[i, n - 1] पर तत्व G[i + 1, 0] पर चला जाता है

  • ग्रिड G[m - 1, n - 1] पर तत्व G[0, 0] पर चला जाता है

तो यदि ग्रिड इस तरह है -

123
456
789

आउटपुट होगा -

912
345
678

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

  • शिफ्ट ऑपरेशन मैट्रिक्स को इनपुट के रूप में लेगा

  • n = पंक्तियों की संख्या, m := कॉलम की संख्या, x := निचला दायां तत्व

  • i := n - 1 से 0 तक नीचे

    • j := m - 1 से 0 तक नीचे

      • यदि j = 0 और i > 0, तो G[i, j] := G[i - 1, m - 1]

      • अन्यथा यदि j > 0, तो G[i, j] := G[i, j - 1]

  • G[0, 0] := x

  • निम्न नियम द्वारा शिफ्ट ऑपरेशन कॉल करें -

  • जब तक k 0 नहीं है

    • ग्रिड G को शिफ्ट करें

    • k को 1 से घटाएं

  • ग्रिड G लौटाएं

उदाहरण (C++)

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

#include <bits/stdc++.h> using namespace std; void print_vector(vector<vector<int> > v){    cout << "[";    for(int i = 0; i<v.size(); i++){       cout << "[";       for(int j = 0; j <v[i].size(); j++){          cout << v[i][j] <<", ";       }       cout << "],";    }    cout << "]"<<endl; } class Solution { public:    void shift(vector<vector<int>>& grid){       int n = grid.size();       int m = grid[0].size();       int x = grid[n-1][m-1];       for(int i = n-1; i>=0; i--){          for(int j = m-1;j>=0;j--){             if(j == 0 && i>0){                grid[i][j] = grid[i-1][m-1];             }             else if(j>0){                grid[i][j] = grid[i][j-1];             }          }       }       grid[0][0] = x;    }    vector<vector<int>> shiftGrid(vector<vector<int>>& g, int k) {       while(k--){          shift(g);       }       return g;    } }; main(){    Solution ob;    vector<vector<int>> mat = {{1,2,3},{4,5,6},{7,8,9}};    print_vector(ob.shiftGrid(mat, 1)); }

इनपुट

{{1,2,3},{4,5,6},{7,8,9}} 1

आउटपुट

[[9, 1, 2, ],[3, 4, 5, ],[6, 7, 8, ],]

  1. C++ में डायगोनल ट्रैवर्स II C++ में डायगोनल ट्रैवर्स II

    मान लीजिए हमारे पास nums नामक लिस्ट ऑफ लिस्ट है, हमें nums के सभी एलिमेंट्स को डायगोनल क्रम में दिखाना है।इसलिए, यदि इनपुट हैतो आउटपुट होगा [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:एक ऐरे ret परिभाषित करेंएक 2D ऐरे v परिभाषित करेंi := 0 से शुरू करें,

  1. C++ में प्रोसेस मारें C++ में प्रोसेस मारें

    मान लीजिए हमारे पास n प्रोसेस हैं, यहां प्रत्येक प्रोसेस की एक अद्वितीय आईडी होती है जिसे PID या प्रोसेस आईडी कहा जाता है और इसका PPID (पैरेंट प्रोसेस आईडी) भी होता है। प्रत्येक प्रोसेस का केवल एक पैरेंट प्रोसेस होता है, लेकिन उसके एक या अधिक चाइल्ड प्रोसेस हो सकते हैं। यह एक ट्री संरचना की तरह है।

  1. C++ में गिलहरी सिमुलेशन C++ में गिलहरी सिमुलेशन

    एक पेड़, एक गिलहरी, और कई नट्स हैं। स्थितियों को 2D ग्रिड में सेल द्वारा दर्शाया जाता है। आपका लक्ष्य गिलहरी के लिए सभी नट्स को इकट्ठा करके उन्हें एक-एक करके पेड़ के नीचे रखने के लिए न्यूनतम दूरी ढूंढना है। गिलहरी एक समय में अधिकतम एक नट ले जा सकती है और चार दिशाओं में आगे बढ़ सकती है - ऊपर, नीचे,