zoj zju 2990 Decoding 字符串处理

Decoding



Time Limit: 2 Seconds      Memory Limit: 65536 KB



Chip and Dale have devised an encryption method to hide their (written) text messages. They first agree secretly on two numbers that will be used as the number of rows (R) and columns (C) in a matrix. The sender encodes an intermediate format using the following
rules:

1.

The text is formed with uppercase letters [A-Z] and <space>.

2.

Each text character will be represented by decimal values as follows:

<space> = 0, A = 1, B = 2, C = 3, ..., Y = 25, Z = 26 The sender enters the 5 digit binary representation of the characters‘ values in a spiral pattern along the matrix as shown below. The matrix is padded out with zeroes (0) to fill the matrix completely.
For example, if the text to encode is: "ACM" and R=4 and C=4, the matrix would be filled in as follows:

A = 00001, C = 00011, M = 01101(one extra 0) The bits in the matrix are then concatenated together in row major order and sent to the receiver. The example above would be encoded as: 0000110100101100

Input

The first line of input contains a single integer N, (1 <= N <= 1000) which is the number of datasets that follow.

Each dataset consists of a single line of input containing R (1 <= R <= 21), a space, (1 <= C <= 21), a space, and a string of binary digits that represents the contents of the matrix (R * Cbinary digits).
The binary digits are in row major order.

Output

For each dataset, you should generate one line of output with the following values: The dataset number as a decimal integer (start counting at one), a space, and the decoded text message. You should throw away any trailing spaces and/or partial characters found
while decoding.

Sample Input

4

4 4 0000110100101100

5 2 0110000010

2 6 010000001001

5 5 0100001000011010110000010

Sample Output

1 ACM

2 HI

3 HI

4 HI HO

题意: 输入r c str。把str字符串 按行填入r*c。再照图中的顺序,转换出来,成一串字符。再把每五个二进制数转换为一个A-Z字母,连续五个0为空格。把字母或空格输出。但是尾部的空格要去除,并且如果没有字母全都是空格,那么也是不输出的。

#include<stdio.h>
#include<string>
#include<iostream>
#include<map>
#include<string.h>
using namespace std;
int mp[30][30];
char bol[1000];
int dir[4][2]={0,1,1,0,0,-1,-1,0};
int main()
{
	int t;
	string str;
	int cas=1;
	int r,c;
	scanf("%d",&t);

	while(t--)
	{
		scanf("%d%d",&r,&c);
		cin>>str;
		int pos=0;
		for(int i=0;i<r;i++)
		{
			for(int j=0;j<c;j++)
			{
				mp[i][j]=str[pos++]-'0';
			}
		}
		int x=0,y=0;
		int xx,yy;
		int ff=0;
		int tem=0;
		int bin=0;
		int ling=0;
		printf("%d ",cas++);
		for(int i=0;i<r*c;i++)
		{
			tem*=2;
			tem+=mp[x][y];
			mp[x][y]=-1;
			if((i+1)%5==0)
			{
				if(tem==0)
					ling++;
				else
				{
					for(int j=0;j<ling;j++)
					{
						printf(" ");
					}
					ling=0;
					printf("%c",'A'+tem-1);
					tem=0;
				}
			}

			xx=x+dir[ff][0];
			yy=y+dir[ff][1];

			if(xx>=0&&xx<r&&yy>=0&&yy<c&&mp[xx][yy]!=-1)
			{
				int a=1;
			}
			else
			{
				ff=(ff+1)%4;
				xx=x+dir[ff][0];
				yy=y+dir[ff][1];
			}
			x=xx;
			y=yy;
		}
		puts("");

	}

	return 0;
}
时间: 2024-10-06 12:01:41

zoj zju 2990 Decoding 字符串处理的相关文章

zoj zju 2989 Encoding 字符串处理

Encoding Time Limit: 2 Seconds      Memory Limit: 65536 KB Chip and Dale have devised an encryption method to hide their (written) text messages. They first agree secretly on two numbers that will be used as the number of rows (R) and columns (C) in

ZOJ File Searching(字符串)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1840 Have you ever used file searching tools provided by an operating system? For example, in DOS, if you type "dir *.exe", the OS will list all executable files with extension &quo

zoj 1151 Word Reversal(字符串操作模拟)

题目连接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1151 题目描述: For each list of words, output a line with each word reversed without changing the order of the words. This problem contains multiple test cases! The first line of a multip

zoj zju 2994 Tiling a Grid With Dominoes 状压dp

Tiling a Grid With Dominoes Time Limit: 2 Seconds      Memory Limit: 65536 KB We wish to tile a grid 4 units high and N units long with rectangles (dominoes) 2 units by one unit (in either orientation). For example, the figure shows the five differen

zoj 3490 String Successor 字符串 进制

String Successor Time Limit: 2 Seconds      Memory Limit: 65536 KB The successor to a string can be calculated by applying the following rules: Ignore the nonalphanumerics unless there are no alphanumerics, in this case, increase the rightmost charac

zoj zju 2992 Monkey Vines 二叉树

Monkey Vines Time Limit: 2 Seconds      Memory Limit: 65536 KB Deep in the Amazon jungle, exceptionally tall trees grow that support a rich biosphere of figs and juniper bugs, which happen to be the culinary delight of brown monkeys. Reaching the can

zoj zju 2991 Flipping Burned Pancakes

Flipping Burned Pancakes Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge The cook at the Frobbozz Magic Pancake House sometimes falls asleep on the job while cooking pancakes. As a result, one side of a stack of pancakes is often

ZOJ 1151 Word Reversal反转单词 (string字符串处理)

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=151 For each list of words, output a line with each word reversed without changing the order of the words. This problem contains multiple test cases! The first line of a multiple input is

ZOJ 3829 Known Notation(字符串处理 数学 牡丹江现场赛)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5383 Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathematics and computer science. It is also known as postfix notation since every operator in an ex