一道有趣的迴圈題目

2021-05-22 01:07:28 字數 1044 閱讀 9077

問題:輸入為

n,求乙個

n*n的矩陣,規定沿

45度線遞增,形成乙個

zigzag

陣列(jepg

編碼裡取畫素資料的排列順序),用

c++實現。

本人的實現思路(在《程式設計師面試寶典》中有另一種解法):

問題的實質是把

[0,n-1]

中的整數依之字形填入乙個二維陣列。於是考慮按之字形遍歷陣列,遍歷時,方向共有三個:

1.起始時向右一位:

a)如果沒有填充完畢則向左下方斜行;

2.向左下方斜行;

a)如果沒有碰到邊界,則繼續向左下方斜行;

b)如果碰到左邊界而沒碰到下邊界;則向下直行;

c)如果碰到下邊界(不管有沒有碰到左邊界),則向右直行;

3.向右上方斜行;

a)如果沒有碰到邊界,則繼續向右上方斜行;

b)如果碰到上邊界而沒有碰到右邊界,向右直行;

c)如果碰到右邊界(無論有沒有碰到上邊界),則向下直行;

填充數字夠

n*n個時結束填充,

c++**如下:

#include

"stdafx.h"

#include

#include

#include

using

namespace

std;

enum

direction;

void

printn(intn)

else

if(x+1else

break;

case

zigzagup:

if (x-1>=0&&y+1else

if (x-1<0&&y+1else

break;}

} for (int

i=0;i

cout

i=0;i

delete a; }

int_tmain(int

argc, _tchar* argv)

一道有趣的迴圈題目

問題 輸入為 n,求乙個 n n的矩陣,規定沿 45度線遞增,形成乙個 zigzag 陣列 jepg 編碼裡取畫素資料的排列順序 用 c 實現。本人的實現思路 在 程式設計師面試寶典 中有另一種解法 問題的實質是把 0,n 1 中的整數依之字形填入乙個二維陣列。於是考慮按之字形遍歷陣列,遍歷時,方向...

一道有趣的題目007

描述一輛重型卡車欲穿過x千公尺的沙漠,卡車耗汽油為1公升 千公尺,卡車總載油能力為l公升。顯然卡車裝一次油是過不了沙漠的,因此司機必須設法在沿途建立若干貯油點,使卡車能順利穿過沙漠。試問司機應怎樣建立這些貯油點?每一貯油點應儲存多少汽油,才能使卡車以消耗最少汽油的代價通過沙漠?輸入輸入包含兩個整數x...

一道有趣的Try catch finally的題

package com public class tryreturnfinally catch exception e finally return x public static void main string args 為何這個輸出是2?在 return x xx 和 x debug後,先進入...