UVa213 資訊解碼

2021-07-27 17:10:47 字數 823 閱讀 1315

對於下面這個字串:

0,00,01,10,000,001,010,011…….

首先是長度為1的串,然後是長度為2的串,以此類推。不存在全為1的串。

你的任務是編寫乙個程式。首先輸入乙個**頭(例如ab#tancnrtxc),則上述序列的每個串依次對應編碼頭的每個字元。例如,0對應a,00對應b,01對應#…,0000對應c。接下來是編碼文字(可能由多行組成,你應當把他們拼成乙個長長的01串)。編碼文字由多個小節組成,每個小節的前3個數字代表小節中每個編碼的長度,用二進位制表示,然後是個字元的編碼,以全1結束。編碼文字以000結束。

#include

#include

#include

#include

#include

using

namespace

std;

int code[8][1

<<8];//按位壓縮 = code[8][256];

int readchar()

}int readint(int n)

int readcode()

}return1;}

int main()

}cout

<< endl;

}return

0;}

我覺得這道題考察了對二進位制讀取,轉化,因為存進去的都是01串,要考慮如何轉為十進位制,而且編碼可能有多行組成,還要考慮換行符,由於是二進位制,存的順序也是按二進位制,陣列開成二維,第乙個是編碼長度,第二個是編碼的十進位制大小。

這裡對編碼的讀入,判斷,和儲存利用了readint和readcode來實現。

UVa 213 資訊解碼

這題的話,我們只要理解題意,應該就不算很難。我們可以開乙個二維陣列,用來存放對應的編碼字元,第乙個下表是length,第二個下標是value,這樣一來,我們在讀入資料的時候就進行處理,然後想要使用的時候就可以直接找到。讀完編碼頭之後,我們就不停地讀入每乙個小節,直到出現000。讀小節的時候,我們不停...

資訊解碼 uva213

對於下面這個字串 0,00,01,10,000,001,010,011 首先是長度為1的串,然後是長度為2的串,以此類推。不存在全為1的串。你的任務是編寫乙個程式。首先輸入乙個 頭 例如ab tancnrtxc 則上述序列的每個串依次對應編碼頭的每個字元。例如,0對應a,00對應b,01對應 000...

UVA 213 資訊解碼(二進位制 位運算)

出自劉汝佳演算法競賽入門經典第四章。考慮下面的01串串行 0,00,01,10,000,001,010,011,100,101,110,0000,0001,1101,1110,00000,首先是長度為1的串,然後是長度為2的串,依此類推。如果看成二進位制,相同長度的後 乙個串等於前乙個串加1。注意上...