和1512一样都是螺旋矩阵。
#include <stdio.h>
#include <string.h>
int row,col;
char data[25][25];
char str[500];
char text[500];
int main()
{
int t,i,j,k,l,smallnum,ctr;
char c;
int temprow,tempcol;
int test=1;
int num;
scanf( "%d",&t );
while ( t-- ) {
scanf( "%d%d",&row,&col );
if ( row>col )
smallnum=col;
else
smallnum=row;
ctr=smallnum/2;
getchar();
for ( i=0;i<row;i++ ) {
for ( j=0;j<col;j++ ) {
scanf( "%c",&c );
data[i][j]=c;
}
}
k=0;
for ( i=0;i<ctr;i++ ) {
temprow=row-1-i;
tempcol=col-1-i;
for ( j=i;j<tempcol;j++ ) {
str[k]=data[i][j];
k++;
}
for ( j=i;j<temprow;j++ ) {
str[k]=data[j][tempcol];
k++;
}
for ( j=tempcol;j>i;j-- ) {
str[k]=data[temprow][j];
k++;
}
for ( j=temprow;j>i;j-- ) {
str[k]=data[j][i];
k++;
}
}
if ( smallnum&1 ) {
i=ctr;
if ( row<=col ) {
for ( j=i; j<col-i;j++ ) {
str[k]=data[i][j];
k++;
}
}
else {
for ( j=i;j<row-i;j++ ) {
str[k]=data[j][i];
k++;
}
}
}
l=(k/5)*5;
printf( "%d ",test );
test++;
k=0;
for ( i=0;i<l;i=i+5 ) {
num=16*(str[i]-'0')+8*(str[i+1]-'0')+4*(str[i+2]-'0')+2*(str[i+3]-'0')+str[i+4]-'0';
if ( num==0 ) {
text[k]=' ';
k++;
}
else {
text[k]='A'+num-1;
k++;
}
}
while ( text[k-1]==' ' )
k--;
for ( i=0;i<k;i++ )
printf( "%c",text[i] );
printf( "\n" );
}
return 0;
}