題目鏈接
題目描述
設某漢字由N × N的0和1的點陣圖案組成,
我們依照以下規則生成壓縮碼,連續一組數值:從漢字點陣圖案的第一行第一個符號開始計算,按書寫順序從左到右,由上至下,第一個數表示連續有幾個0,第二個數表示接下來連續有幾個1,第三個數再接下來連續有幾個0,第四個數接著連續幾個1,以此類推……
例如: 以下漢字點陣圖案:
0001000
0001000
0001111
0001000
0001000
0001000
1111111
對應的壓縮碼是: 7 3 1 6 1 6 4 3 1 6 1 6 1 3 7 (第一個數是N ,其余各位表示交替表示0和1 的個數,壓縮碼保證 N × N=交替的各位數之和)
輸入格式
一行,壓縮碼,
輸出格式
漢字點陣圖(點陣符號之間不留空格),(3<=N<=200)
輸入輸出樣例
輸入 #1
7 3 1 6 1 6 4 3 1 6 1 6 1 3 7
輸出 #1
0001000
0001000
0001111
0001000
0001000
0001000
1111111
思路:見代碼,
代碼:
#include<stdio.h>
int main()
{
int N, p, q, t;
for(scanf("%d", &N);~scanf("%d", &p); t ^= 1)//回圈開始時讀入 N ,不斷讀入 P ,每次回圈后 t 交換 01 狀態
for(; p--; q++) // 先執行一次 p--,此后每次順序執行 q++ , p--,直到 (p--) == 0 時結束本層回圈
{
if(q == N) q = 0 & putchar(10); // 如果輸出達到 N 個,q置零并且輸出換行符
putchar(48 + t); // 輸出字符 0 或 1
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259026.html
標籤:其他
