ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N หน้าที่ของเราคือพิมพ์ตัวเลขภายในช่วง (1, N 2 ) ในเมทริกซ์ 2 มิติขนาด NxN เพื่อให้องค์ประกอบรวมของแต่ละแถวเท่ากัน
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล − N =4
ผลผลิต −
1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15
ผลรวมขององค์ประกอบในแต่ละแถวคือ 34
ในการแก้วิธีนี้ เราต้องวางแต่ละองค์ประกอบในเมทริกซ์เพื่อให้ผลรวมในแต่ละแถวเท่ากัน สำหรับสิ่งนี้ เราจะใช้วิธีการโลภและทีละแถวเพื่อวางองค์ประกอบที่ถูกต้องในตำแหน่งที่ทำให้ผลรวมเท่ากัน
สำหรับสิ่งนี้ เริ่มแรกเราจะป้อนองค์ประกอบทั้งหมดในเมทริกซ์แล้วสร้างเมทริกซ์ใหม่ที่มีองค์ประกอบของเมทริกซ์ก่อนหน้าโดยใช้สูตรนี้
resultMat[i][j] = prevMat[j][(i+j)%n]
ตัวอย่าง
โค้ดด้านล่างแสดงการใช้งานโซลูชันของเรา
#include<iostream> using namespace std; int main(){ int n = 4,i,j; cout<<"Matrix of size : "<<n<<" in which sum of elements of all rows is equal is :\n"; int prevMat[n][n], resultMat[n][n] ; int c = 1; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) prevMat[i][j] = c++; } for (i = 0; i < n; i++) { for (<) { resultMat[i][j] = prevMat[j][((i+j)%n)]; } } for (i = 0;i<n;i++) { for (j=0; j<n; j++) { cout<<resultMat[i][j]<<"\t"; } cout<<endl; } }
ผลลัพธ์
Matrix of size : 4 in which sum of elements of all rows is equal is : 1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15