设为首页 加入收藏

TOP

C/C++語言 - 日常算法 - 蛇形填數
2019-06-11 10:08:07 】 浏览:14
Tags:C/C 語言 -日常 算法 蛇形

C/C++語言 - 日常算法 - 蛇形填數

日期 : 2019-06-11

問題描述:

在n×n方阵里填入1,2,…,n×n,要求填成蛇形。

例如,n=4时方阵为:

10   11  12  1

9  16  13  2

8  15  14  3

7  6   5   4

上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n≤8。

代碼部分

 

 1 #include <iostream>
 2 #include <cstring>  // 提供 memset 函數,這是 C 的頭文件
 3 
 4 using namespace std;
 5 
 6 
		    
 
			
n style="color: #0000ff;">#define MAXN 100 7 #define test2 8 #define result 9 10 int snakelike(void) { 11 // 蛇形填數 12 int a[MAXN][MAXN]; 13 int row; 14 memset(a, 0, sizeof(a)); 15 cout << "Please Input the row" << endl; 16 cin >> row; 17 #ifdef test // 只是為了檢測代碼輸出情況 18 for (int i = 0; i < row; i++) 19 { 20 for (int j = 0; j < row; ++j) 21 { 22 a[i][j] = i; 23 } 24 } 25 #endif 26 #ifdef test2 27 int x = 0, y = row - 1,brush = 1; 28 a[x][y] = 1; 29 while(brush < row * row) 30 { 31 while (x + 1 < row && !a[x + 1][y]) { a[++x][y] = ++brush; } 32 while (y - 1 >= 0 && !a[x][y - 1]) { a[x][--y] = ++brush; } 33 while (x - 1 >= 0 && !a[x - 1][y]) { a[--x][y] = ++brush; } 34 while (y + 1 < row && !a[x][y + 1]) { a[x][++y] = ++brush; } 35 } 36 37 #endif 38 39 #ifdef result 40 cout << "---------result---------" << endl << endl; 41 int count = 0; 42 for (int i = 0; i < row; i++) 43 { 44 for (int j = 0; j < row; ++j) 45 { 46 cout << a[i][j] << "\t"; 47 count++; 48 if (!(count % row)) 49 { 50 cout << "\b" << endl << endl; 51 } 52 } 53 } 54 #endif 55 return 0; 56 } 57 int main(int argc,char const *argv[]) 58 { 59 snakelike(); 60 return 0; 61 } 62

 


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇上POJ刷题 下一篇[CTSC2017] 吉夫特

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }