九度題目1120

2021-07-22 19:29:42 字數 1238 閱讀 8943

題目描述:

給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。

我們假設對於小寫字母有』a』 < 『b』 < … < 『y』 < 『z』,而且給定的字串中的字母已經按照從小到大的順序排列。

輸入:

輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。

輸出:

輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。字母序如下定義:

已知s = s1s2…sk , t = t1t2…tk,則s < t 等價於,存在p (1 <= p <= k),使得

s1 = t1, s2 = t2, …, sp - 1 = tp - 1, sp < tp成立。

樣例輸入:

abc

樣例輸出:

abc

acb

bac

bca

cab

cba對於乙個排列,以 1432 為例來講,我們尋找比它的下乙個排列,直至沒有更大的排列為止。

具體來說,我們從後往前尋找遞減的相鄰的字元對,這裡是 14 ,然後從後面選擇出比 1 大的最小的數字 2 ,兩者交換,此時後面必為乙個遞減序列,這裡是 431 ,將其逆轉變為 134 ,所以下乙個排列為 2134。

#include

#include

#include

#include

using

namespace

std;

#define maxsize 7

char *str;

bool nextrange(char * s)

}if(rc == '#') return

false;

for(int i= len -1;i>=1;i--)

}// replace and reverse

//replace

char tmp = s[rp1];

s[rp1] = s[rp2];

s[rp2] = tmp;

//reverse

for (int i = 0; i < (len - rp1) / 2; ++i)

return

true;

}int main() while (nextrange(str));

printf("\n");

}return

0;}

九度 1120 全排列

題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入 輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出 輸出這個字串的所有排列方式,每行乙個排列。要求字母...

遞迴 九度1120 全排列

題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入 輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出 輸出這個字串的所有排列方式,每行乙個排列。要求字母...

九度題目1069

include include include using namespace std struct student buf 1001 int main sort buf,buf n scanf d m while m 0 else if strcmp x,buf mid no 0 else top...