執行結果如下圖:
解題思路:可以將這個問題分解成x個外圍正方形所圍成的圖形,外圍的正方形又可以分為4個步驟,向右依次增大、向下依次增大、向左依次增大、向上依次增大。基本思路就是如此,最關鍵的就是什麼時候是轉折的時候,比如向右增大到接下來的向下增大轉折條件是什麼,我沒細究所以給外圍加了圍牆(陣列初始化為0,在輸入n後在外圍全賦值為1)作為判定條件,詳細看**
以下給出**示例:
#include //自己寫的code
#define n 20
//解決的問題:數字從1開始順時針填入n行n列陣列
int
arrary[n][n]=;
void
assist(
int
);
void
deal(
int
&,
int
,
int
);
int
main()
for
(i=1;i<=n;i++)
}
void
assist(
int
n)
//外加圍牆
void
deal(
int
&num,
int
column,
int
row)
column=j-1;
//printf("column:%d\n",column);測試資料時候檢測
for
(i=row+1;;i++)
//下
row=i-1;
//printf("row:%d\n",row);
for
(j=column-1;;j--)
//左橫
column=j+1;
// printf("column:%d\n",column);
for
(i=row-1;;i--)
//上
row=i-1;
//printf("row:%d\n",row);
}
深度優先搜尋 從1到n數字的所有排列
把數字當做撲克牌按照一定順序依次放到盒子內。public class dfstest public static void main string args public void dfs int step sum system.out.println here sum return 此時站在第st...
從0 n 中文字內容 含有1的 數字的個數
本人所碰到的情況分以下三種 1 通常思路 for 字串 比對計數 2 位數計算 另外有其他的朋友取高低位在此不做贅述 拿別人鏈結不太好csdn這類帖子不少可以找一找 3取餘public class maintest public static void get int n 取得數字n 取餘判斷是否為...
自然數從1到n之間,有多少個數字含有1
問題明確而簡單.for迴圈肯定是不好的.用遞推方法 定義h n 從1到9999.9999 n 個 9 之間含有1的數字的個數.定義f n 為n位數中含有1的數字的個數.由定義可知 h n f 1 f 2 f 3 f n 則f 1 h 1 1 f 2 10 1 8 h 1 f 3 10 2 8 h 2...