包含N个不同字母全排列的最短字符串长度是多少
答案:3 悬赏:60
解决时间 2021-01-17 22:46
- 提问者网友:欲劫无渡
- 2021-01-17 18:28
包含N个不同字母全排列的最短字符串长度是多少
最佳答案
- 二级知识专家网友:長槍戰八方
- 2021-01-17 18:40
固定字符的组合就一种,要求的是全排列吧。
如果N个字符各自不同的话,思路也不难,
就是若想求N个字符的全排列,那么就把最后一个字符和第i个字符交换并求其余字母的N-1全排列。
(伪)代码如下:
void all_par(char[] arr, int n)
{
if(n == 0)
printf("%s\n", arr);
for(i = 0; i
{
swap(&arr[n-1], &arr[i]);
all_par(arr, n-1);
swap(&arr[n-1], &arr[i]);
}
}
void swap(char *a, char *b)
{
char temp = *a;
*a = *b;
*b = temp;
}
如果N个字符各自不同的话,思路也不难,
就是若想求N个字符的全排列,那么就把最后一个字符和第i个字符交换并求其余字母的N-1全排列。
(伪)代码如下:
void all_par(char[] arr, int n)
{
if(n == 0)
printf("%s\n", arr);
for(i = 0; i
{
swap(&arr[n-1], &arr[i]);
all_par(arr, n-1);
swap(&arr[n-1], &arr[i]);
}
}
void swap(char *a, char *b)
{
char temp = *a;
*a = *b;
*b = temp;
}
全部回答
- 1楼网友:醉吻情书
- 2021-01-17 19:53
我试出来的,以数字为例:
N=1:1!= 1
字符串:1
N=2:1!+ 2!= 3
字符串:1 2 1
N=3: 1!+ 2!+ 3!= 9
字符串:1 2 3 1 2 1 3 2 1
1N=4:1!+ 2!+ 3!+ 4!=33
字符串:1 2 3 4 1 2 3 1 4 2 3 1 2 4 3 1 2 1 3 4 2 1 3 2 4 1 3 2 1 4 3 2 1
N=5:1!+ 2!+ 3!+ 4!+ 5!=153
这个有点长,就没有试
长度<=5的时候都符合这种规律,即阶乘的和,大于5的情况我就不知道对不对了,但我觉得应该是这样,即:
1!+ 2!+ ··· + (N - 1)! + N!
N=1:1!= 1
字符串:1
N=2:1!+ 2!= 3
字符串:1 2 1
N=3: 1!+ 2!+ 3!= 9
字符串:1 2 3 1 2 1 3 2 1
1N=4:1!+ 2!+ 3!+ 4!=33
字符串:1 2 3 4 1 2 3 1 4 2 3 1 2 4 3 1 2 1 3 4 2 1 3 2 4 1 3 2 1 4 3 2 1
N=5:1!+ 2!+ 3!+ 4!+ 5!=153
这个有点长,就没有试
长度<=5的时候都符合这种规律,即阶乘的和,大于5的情况我就不知道对不对了,但我觉得应该是这样,即:
1!+ 2!+ ··· + (N - 1)! + N!
- 2楼网友:忘川信使
- 2021-01-17 19:01
包含N个不同字母全排列的最短字符串长度是多少
全排列啊,当然是N
全排列啊,当然是N
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息