设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线的和,例如以下魔方,各行各列及两对角线值的和都是64.
生活随笔
收集整理的這篇文章主要介紹了
设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线的和,例如以下魔方,各行各列及两对角线值的和都是64.
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
求4*4的魔方的一般步驟如下:
設置初始魔方的起始值和相鄰元素之間的差值。例如上述魔方的初始魔方的起始值(first)和相鄰元素之間的差值(step)分別為:first=1;?step=2;
設置初始魔方元素的值,例如上述魔方的初始魔方為:
1 ??3 ??5 ??7
9 ??11 ?13 ?15
17 ?19 ?21 ?23
25 ?27 ?29 ?31
生成最終魔方。方法如下:
求最大元素值與最小元素值的和sum,該實例的sum是:1+31=32
用32減去初始魔方所有對角線上元素的值,然后將結果放在原來的位置,這樣就可以求得最終魔方。
#include<iostream> using namespace std; class Mj {public:void getdata();//輸入數據的成員函數; void getfirstmafic();//對數組進行賦值; void generatemagic();//對數組進行運算; void printmagic();//輸出結果: private:int m[4][4];//定義一個四維數組; int step;//差值; int first;//第一個值; int sum;//最大值; }; void Mj::getdata() {cin>>first>>step>>sum;//輸入初始值、差值、最大值; } void Mj::getfirstmafic() {int a,b;a=first;b=step;for(int i=0;i<4;i++){for(int j=0;j<4;j++){m[i][j]=a;//進行對數組的賦值; a+=b;}} } void Mj::generatemagic() {for(int i=0;i<4;i++){m[i][i]=sum-m[i][i];//對對角線上的值進行運算; m[i][3-i]=sum-m[i][3-i];//對副對角線上的值運算: } } void Mj::printmagic() {for(int i=0;i<4;i++){for(int j=0;j<4;j++){cout<<m[i][j]<<ends;//輸出數組; }cout<<endl;} } int main() {Mj t1;//定義一個類的對象; t1.getdata();//調用成員函數; t1.getfirstmafic();t1.generatemagic();t1.printmagic();return 0;}?
總結
以上是生活随笔為你收集整理的设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线的和,例如以下魔方,各行各列及两对角线值的和都是64.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 任务和特权级保护(四)——《x86汇编语
- 下一篇: 任务和特权级保护(五)——《x86汇编语