問題:輸入為
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(int
n)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
<}cout
i=0;i delete a; }int _tmain(int argc, _tchar* argv) 問題 輸入為 n,求乙個 n n的矩陣,規定沿 45度線遞增,形成乙個 zigzag 陣列 jepg 編碼裡取畫素資料的排列順序 用 c 實現。本人的實現思路 在 程式設計師面試寶典 中有另一種解法 問題的實質是把 0,n 1 中的整數依之字形填入乙個二維陣列。於是考慮按之字形遍歷陣列,遍歷時,方向... 描述一輛重型卡車欲穿過x千公尺的沙漠,卡車耗汽油為1公升 千公尺,卡車總載油能力為l公升。顯然卡車裝一次油是過不了沙漠的,因此司機必須設法在沿途建立若干貯油點,使卡車能順利穿過沙漠。試問司機應怎樣建立這些貯油點?每一貯油點應儲存多少汽油,才能使卡車以消耗最少汽油的代價通過沙漠?輸入輸入包含兩個整數x... package com public class tryreturnfinally catch exception e finally return x public static void main string args 為何這個輸出是2?在 return x xx 和 x debug後,先進入...一道有趣的迴圈題目
一道有趣的題目007
一道有趣的Try catch finally的題