例如:abcdefghijklmnop,看成 n * n 陣列後為:
e f g h
i j k l
m n o p
印出時則由上到下印出,為:aeimbfjncgkodhlp。
首先當讀入一字串時,須先判斷它的長度是否合乎 n * n 的陣列,所以先把它的長度開根號在平方回來,視它是否為同一數,若是則合乎。最後只須以它長度開根號後的長度為間隔,依序印出即可,C 語言程式碼如下:
gets(str);
int len = strlen(str);
int sqrtLen = (int)sqrt(len);
if (sqrtLen * sqrtLen != len)
printf("INVALID\n");
else
{
int i, j;
for (i = 0; i < sqrtLen; i ++)
for (j = i; j < len; j += sqrtLen)
printf("%c", str[j]);
printf("\n");
}
By David.K
p11716題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言