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

C++ में मैट्रिक्स के आरोही क्रम में प्रत्येक विकर्ण तत्वों को क्रमबद्ध करने का कार्यक्रम

मान लीजिए कि हमारे पास n x m मैट्रिक्स मैट है, हमें इस मैट को तिरछे बढ़ते क्रम में ऊपर-बाएँ से नीचे दाईं ओर क्रमबद्ध करना है, ताकि विकर्णों में सभी तत्वों को क्रमबद्ध किया जा सके। तो अगर इनपुट मैट्रिक्स की तरह है -

<टीडी>2
3 3 1 1
2 2 1 2
1 1 1

आउटपुट मैट्रिक्स होगा -

1 1 1 1
1 2 2 2
1 2 3 3

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

  • हल () नामक विधि को परिभाषित करें, इसमें si, sj और मैट्रिक्स मैट लगेगी

  • n :=पंक्तियों की संख्या और m :=स्तंभों की संख्या

  • अस्थायी नामक एक सरणी बनाएं

  • i:=si और j :=sj, और अनुक्रमणिका :=0

  • जबकि मैं

    • m[i, j] को टेम्परेचर में डालें, फिर i और j को 1 से बढ़ाएँ

  • अस्थायी सरणी क्रमबद्ध करें

  • सूचकांक सेट करें:=0, मैं:=सी और जे:=एसजे

  • जबकि मैं

    • चटाई [i, j]:=अस्थायी [सूचकांक]

    • i, j और अनुक्रमणिका को 1 से बढ़ाएँ

  • मुख्य विधि से, निम्न कार्य करें -

  • n :=पंक्तियों की संख्या और m :=स्तंभों की संख्या

  • मैं के लिए 0 से n - 1 की सीमा में, करो

    • हल करें (i, 0, मैट)

  • j के लिए 1 से m-1 की सीमा में, करें

    • हल (0, जे, मैट)

  • वापसी चटाई

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<vector<auto> > 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 solve(int si, int sj, vector < vector <int> > &mat){
      int n = mat.size();
      int m = mat[0].size();
      vector <int> temp;
      int i = si;
      int j = sj;
      int idx = 0;
      while(i < n && j < m){
         temp.push_back(mat[i][j]);
         i++;
         j++;
      }
      sort(temp.begin(), temp.end());
      idx = 0;
      i = si;
      j = sj;
      while(i < n && j < m){
         mat[i][j] = temp[idx];
         i++;
         j++;
         idx++;
      }
   }
   vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
      int n = mat.size();
      int m = mat[0].size();
      for(int i = 0; i <n; i++){
         solve(i, 0, mat);
      }
      for(int j = 1; j < m; j++){
         solve(0, j, mat);
      }
      return mat;
   }
};
main(){
   vector<vector<int>> v = {{3,3,1,1},{2,2,1,2},{1,1,1,2}};
   Solution ob;
   print_vector(ob.diagonalSort(v));
}

इनपुट

{{3,3,1,1},{2,2,1,2},{1,1,1,2}}

आउटपुट

[[1, 1, 1, 1, ], [1, 2, 2, 2, ], [1, 2, 3, 3, ],]

  1. सी प्रोग्राम दस तत्वों की एक सरणी को आरोही क्रम में सॉर्ट करने के लिए

    एक सरणी संबंधित डेटा आइटम का एक समूह है जो एकल नाम से संग्रहीत किया जाता है। उदाहरण के लिए, इंट स्टूडेंट[30]; यहां, छात्र एक सरणी नाम है जिसमें एक एकल चर नाम के साथ डेटा आइटम का 30 संग्रह होता है। ऑपरेशन एक सरणी के संचालन को नीचे समझाया गया है - खोज - इसका उपयोग यह पता लगाने के लिए किया जाता ह

  1. दिए गए मैट्रिक्स को C++ में एक विकर्ण मैट्रिक्स में बदलने का कार्यक्रम

    आकार nxn के मैट्रिक्स को देखते हुए यह किसी भी प्रकार के दिए गए मैट्रिक्स को विकर्ण मैट्रिक्स में बदलने का कार्य करता है। विकर्ण मैट्रिक्स क्या है विकर्ण मैट्रिक्स nxn मैट्रिक्स है जिसके सभी गैर-विकर्ण तत्व शून्य हैं और विकर्ण तत्व कोई भी मान हो सकते हैं। गैर-विकर्ण तत्वों को 0 में बदलने का आरेख नी

  1. सी ++ में विकर्ण मैट्रिक्स और स्केलर मैट्रिक्स की जांच करने का कार्यक्रम

    मैट्रिक्स M[r][c] दिया गया है, r पंक्तियों की संख्या को दर्शाता है और c कॉलम की संख्या को इस तरह दर्शाता है कि r =c एक वर्ग मैट्रिक्स बनाता है। हमें ज्ञात करना है कि दिया गया वर्ग आव्यूह विकर्ण . है या नहीं और स्केलर मैट्रिक्स या नहीं, अगर यह विकर्ण . है और स्केलर मैट्रिक्स फिर परिणाम में हाँ प्