UVA 213(文字入力+符号化)


タイトルリンク
 
タイトル:
文字列を指定し、文字コードを0、00、01、10、0000010110011011100000、......
符号化の長さは8を超えてはならない.
文字列を入力し、符号化列を指定して文字列の内容を求めます.
エンコーディング・カラムのフォーマットは次のとおりです.
001(最初の3桁は文字列の長さ)、次いでいくつかの文字列であり、各文字列は1111全1で終了し、結果は計算されない.
1つの文字列は000で終わり、入力が終了したことを示します.注意:入力された符号化は、同じ行でなくてもよい.
対応する文字を出力します.
 
考え方:
文字列入力はスペースまたはリターンで終わるので、文字入力の方法を採用できます.
注意入力した文字列の長さは、すべての符号化数の合計を超えてはいけません.
2次元配列記録文字a[i][j]は、文字符号化の長さiを表し、すべての長さiの文字符号化におけるj番目のビットデータはa[i][j]である.
次に符号化を入力し、最初の3ビットの記録文字が符号化された長さlenを入力し、その後、長さlenの文字列を読み込むたびに、
この行の符号化に対応する文字を印刷します.
 
注:Print出力結果を使用してコードをデバッグできます.
 
#include
#include
#include
using namespace std;
int code[8][1<<8];
int readchar() //  , ,  
{
	for(;;){
		int v=getchar();
		if(v!='
'&&v!='\r') return v; } } int readint(int len) { int v=0;// len v while(len){ v=v*2+readchar()-'0';len--; } return v; } int readcode() // { memset(code,0,sizeof(code)); code[1][0]=readchar(); for(int len=2;len<=7;len++){ for(int i=0;i