1、蜜蜂跟学妹很喜欢写情书,在这信息发达的时代,他们的情书当然不是传统的输信,而是用 E-Mail 传送的。但蜜蜂很害羞,他不希望他的情书被黑客拦截,因此他决定把内容加密。他跟学妹发明了一种加密方法,他们要加密的文字只有大写英文字母以及空格符,首先将每个字符编号,空白编成 0,A 编成 1,B编成 2,Z 编成 26。再将编号转为二进制后,以下图的方式填入一个 RxC的矩阵中:0 0 0 10 1 0 0 0 0 1 0 1 0 1 0B = 00010, E = 00101, E = 00101结尾不够的部分就直接补 0,范例中 R=4 且 C=4,要编码的字符串为“BEE”,产生矩阵后,再一行
2、一行的将数字接起来得到最后的编码结果,因此“BEE”最后会得到的编码字符串是 0001010000101010输入档说明:输入文件中会有多笔数据,第一行是一个正整数 k,代表一共有多少组数据,接下来是 k 组测试数据,每组测试数据一行,格式如下:RC 由大写字母及空格构成的字符串其中 R 不会超过 20,C 不会超过 20,且 R*C 不会小于五倍的字符串长度输出档说明:对每组测试数据,请输出这是第几组测试数据(从 1 开始)以及编码后的结果。范例输入:44 4 BEE5 2 HI2 6 HI5 5 HI HO范例输出:1 00010100001010102 01100000103 01000
3、00010014 0100001000011010110000010程序思路:首先定义 A-Z 以及空格的字符编码,再根据读出的矩阵大小来申请需要的内存空间,并初始化。把读取到的英文转化成相应的字符编码,并填入到螺旋矩阵中。主要就是控制螺旋矩阵的方向,向右填时判断再向右一个是否已初始化,初始化就可以继续向右填,没初始则表明已是最右一个,此时只能向下;同理可控制向四个方向填入数据。以二维数组把矩阵的内容显示出来。程序代码:#include #include #include using namespace std;string c27;void Fill(char *board,string s
4、tr,int row,int col);void Printfstr(char * board,int row,int col);int main()ifstream fin(“1.in“);ofstream fout(“1.out“);string str;int i,j,n,row,col;char *board;for(i = 0;in;while(n0)finrowcol;getline(fin,str,n);for(i = 0;i=0 i+;row_i-;else boardrow_i-1col_i = 0;i+;row_i-;else break;void Printfstr(char * board,int row,int col)int i,j;static t=1;coutt“ “;t = t+1;for(i = 0;irow;i+)for(j = 0;jcol;j+)coutboardij;coutendl;