1. 程式人生 > >幻方的實現,矩陣每行每列每個對角線之和相等

幻方的實現,矩陣每行每列每個對角線之和相等

/************************************************************************************
作者: 徐權
完成日期:20150721
函式功能:幻方功能的實現(每行每列每個對角線的和是相等的)
*************************************************************************************/




#include<stdio.h>
#include<stdlib.h>
#include<math.h>




#define N 10  //下面有手動輸入函式,如果使用,請將這條程式碼註釋,下面scanf()函式程式碼啟用,預設N為10


int main()
{
int **huanfang;
int i, j;
int count = 1;


//手動輸入呼叫函式
//int N;
//puts("請輸入幻方矩陣的邊寬:");
//scanf_s("%d", &N);  //VS2013及以上平臺手動輸入函式呼叫
//scanf("%d", &N);  //VC++6.0 等C89的標準庫呼叫函式,linux c99呼叫也可以


huanfang = (int **)malloc(sizeof(int *)*N);
for (i = 0; i < N; i++)
{
huanfang[i] = (int *)malloc(sizeof(int)*N);
}
if (huanfang == NULL)
{
puts("記憶體開闢失敗!!");
}
for ( i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
huanfang[i][j] = 0;
printf("%5d ",huanfang[i][j]);//設定的數字寬度為5
}
printf("\n");
}
printf("askjdfjashfasgsdg\n");
i = 0;
j = (int)(N + 1) / 2;
while (1)
{
if (huanfang[i][j] == 0)
{
huanfang[i][j] = count;
i = (i + 1) % N;
j =(abs (j + N - 1)) % N;
count++;
}
else
{
i = (abs(i + N - 1)) % N;
j = (j + 2) % N;
huanfang[i][j] = count;
i = (i + 1) % N;
j = (abs(j + N - 1)) % N;
count++;
}
if (count == (N*N+1))
{
break;
}
}




for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("%5d ", huanfang[i][j]);//設定的數字寬度為5
}
printf("\n");
}


system("pause");
return 0;

}

沒有優化,歡迎批評和討論

相關推薦

實現矩陣每個對角線之和相等

/************************************************************************************ 作者: 徐權 完成日期:20150721 函式功能:幻方功能的實現(每行每列每個對角線的和是相等的)

Python中找出陣列或者矩陣/中個數最多的成員及出現的次數

 在Python中,我們可以用scipy.stats.mode函式尋找陣列或者矩陣每行/每列中最常出現成員以及出現的次數 。 from scipy.stats import mode def mode(a, axis=0, nan_policy='propagate'

查詢每個學生門課程的成績sql server實現

本人經常寫sql server指令碼,有時需要行轉列,這裡做個筆記。 練習指令碼 -- 學生表 CREATE TABLE student ( stuid VARCHAR(16) NOT NULL, stunm VARCHAR(20) NOT NULL, PRI

C/C++小程式學習:n*n魔方矩陣實現一對角線上的元素之和相等

用一個程式實現n*n魔方矩陣中,每一行、每一列、每一對角線上的元素之和相等。 矩陣規律: 本程式只適合基數,解釋如下:  N 為奇數時,此題中N設為5 (1) 將1放在第一行中間一列;    (2) 從2開始直到n×n止各數依次按下列規則存放:   按 45°方向行走

1-9九個數填入3*3的格子中使總和相同

#include <iostream> using namespace std; int a[3][3]; int sum; //判斷九宮格內每個數字各不相同 bool test(int x,int y,int n){ a[x][y]=n;

c++二維指針求次大值

cs6 tor ++ mwl docs cst sdi log wem bdvfqu男孟言林塵躥http://shufang.docin.com/sina_6367437306ndhoh0慕忠押悶紊儔http://jz.docin.com/xfhmr75774f9xm1c滔

獲取table表格的資料 (橫向遍歷)

線上展示 F12開啟開發人員工具檢視console內容  表格資料:  獲取表格每行每列資料:   html: <form id="form1">      <div>  

從三層迴圈到標準實現矩陣相乘執行效率提高千倍之路

## 前言 矩陣乘法可以說是最常見的運算之一。 本文介紹不同的方式實現的矩陣乘法,並比較它們執行速度的差異。 表示矩陣的方式有很多種,完善的矩陣類應該實現切片取值,獲得矩陣形狀等操作,但本文並不打算直接從原生Python實現一個矩陣類,而是直接用 Pytorch中的tensor表示矩陣。 ## 開始:

Oracle 動態SQL實現SQL查詢子集

引言 我們都知道Oracle的Pivot的In()裡是不能跟SQL查詢語句的,必須是已知的字串結果,然而我專案中遇到的需求這個In 並不是靜態的,而是根據我傳遞的條件來篩選,一開始想的是解析XML,可惜轉為XML之後,有相同的重複的節點,解析太麻煩,於是想通過

matlab將矩陣儲存到txt中

c為待儲存的矩陣,將c按行和列儲存到saif.txt中。 row=size(c,1); col=size(c,2); fid=fopen(['saif.txt'],'wt'); for i=1:row for j=1:col fprintf(fid,'%g ',c(i,j)); end fpri

//輸出9*9口訣 //程式分析:分列與考慮共99i控制j控制;

//輸出9*9口訣//程式分析:分列與行考慮,共9行9列,i控制行,j控制列;#include <stdio.h>main(){ int i,j,result; printf("\n"); 

//楊氏矩陣 有一個二維陣列. 陣列的從左到右是遞增的從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在。

//楊氏矩陣 有一個二維陣列. 陣列的每行從左到右是遞增的,每列從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在。 時間複雜度小於O(N); 我用一個while迴圈實現了該要求 #include <stdio.h> #include <windows.h>

【C語言】對一個n*n矩陣通過變換使其元素的平均值按遞增順序排序

#include<stdio.h> int main() { int n,a[100][100],r,c,i,j; scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) scanf("%d",&am

微信小程式實現View子節點固定顯示數目多出來自動換

需求是這樣的: 需要根據後臺傳入的資料動態生成view控制元件,固定每行展示三個,多出來的自動換行。 如果用js來寫想必比較簡單,由於接觸微信小程式時間不算太長,對於前端的一些寫法難免運用不是很熟練。 這是我的目錄結構: 相關的思路我已經在程

//楊氏矩陣 有一個二維陣列. 陣列的從左到右是遞增的從上到下是遞增的. 在這樣的陣列中查詢一個數字是否存在

題目: //楊氏矩陣  有一個二維陣列.  陣列的每行從左到右是遞增的,每列從上到下是遞增的.  在這樣的陣列中查詢一個數字是否存在。  時間複雜度小於O(N);  陣列:  1 2 3  2 3 4

楊氏矩陣(二維數組的從左到右是遞增的從上到下是遞增的. 在這樣的數組中查找一個數字)

row stdio.h 線性 數字 %d scan -- else if for 題目要求時間復雜度小於O(N) #include<stdio.h> int find(int arr[][3], int *px, int *py,int key) {

點滴積累有為步思索可致遠(三)

沒有 整數 adc cci 物料 and internet fin http 填空題: 1、用一個字節最多能編出______不同的碼。 2、90283轉換成8進制是___________,16進制是_________________ 3、如下圖:A到F最短的路徑是_