Ref: ITSA 53 - [Problem 5] String
/*******************************************************/
/* ITSA 53 - [Problem 5] String */
/* Author: awei0905 [at] awei0905.blogspot.tw */
/* Version: 2017/04/10 */
/*******************************************************/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
char buf[81], table[81][10] = { 0 }, output[81], vowel[] = { 'a', 'e', 'i', 'o', 'u' };
int K;
void lookup(int cursor) {
if (table[cursor][0] == 0) {
output[cursor] = '\0';
if (--K)
printf("%s\n", output);
else
printf("%s*\n", output);
}
if (table[cursor][0] == 1)
for (int i = 0; i < 5; i++) {
output[cursor] = vowel[i];
lookup(cursor + 1);
}
else
for (int i = 0; table[cursor][i] != '\0'; i++) {
output[cursor] = table[cursor][i];
lookup(cursor + 1);
}
}
int main() {
int indexX = 0, indexY;
scanf("%s%d", buf, &K);
for (int i = 0; buf[i] != '\0'; i++) {
indexY = 0;
if (buf[i] == '[')
for (i++; buf[i] != ']'; i++)
table[indexX][indexY++] = buf[i];
else if (buf[i] == '*')
table[indexX][0] = 1;
else
table[indexX][0] = buf[i];
indexX++;
}
for (int i = 0; table[i][0] != '\0'; i++) {
for (int j = 0; table[i][j + 1] != '\0'; j++) {
for (int k = j + 1; table[i][k] != '\0'; k++) {
if (table[i][j] > table[i][k]) {
int temp = table[i][j]; table[i][j] = table[i][k]; table[i][k] = temp;
}
}
}
}
lookup(0);
}
Debug: I/O[za]xd** 21
axdaa
axdae
axdai
axdao
axdau
axdea
axdee
axdei
axdeo
axdeu
axdia
axdie
axdii
axdio
axdiu
axdoa
axdoe
axdoi
axdoo
axdou
axdua*
axdue
axdui
axduo
axduu
zxdaa
zxdae
zxdai
zxdao
zxdau
zxdea
zxdee
zxdei
zxdeo
zxdeu
zxdia
zxdie
zxdii
zxdio
zxdiu
zxdoa
zxdoe
zxdoi
zxdoo
zxdou
zxdua
zxdue
zxdui
zxduo
zxduu
沒有留言:
張貼留言