题目1. 交换前缀,给定若干个相同长度的字符串,每次可以选择其中的两个,将两个字符串前k个字母进行交换(交换后的字符串可再交换),问总共可以得到多少个不同的字符串。
例子:输入:ABC DEF 输出:8
不同的字符串:ABC DEF / DBC AEF(交换第一个字母) / DEC ABF (交换前两个字母)/ AEC DBF(在交换前两个字母后,再交换第一个字母)
题目2. 无向连通图,输入一个数P,以及一个在P范围内的数组,判断是否可以生成一个无向连通图,满足对于任意i,j相连,则数组的第i个位置与第j个位置也相连。
例子:输入:4(P) 4 3 2 1(数组内容) 输出:Yes
4,3相连,则数组中第3和第4个位置的数字1,2相连, 此时4,3相连也满足要求,连接2,3,则图中4个点,可以有3条边将其连接在一起。
欢迎大佬说说思路,或者直接题解!
第一道题猜测:交换只能改变每个字符在不同字符串,而不能改变它们的位置,位于第k位的字符交换到哪个字符串都是第k位字符。所以统计每一位会出现的字符,去重后计算第k位共有几个字符可能。然后Ans=每一位的字符数相乘。样例每一位都是2,没有可去重的,答案就是222=8
2 x 2 x 2 = 8 ,竟然显示不出来*号
我是这么做的,但是好像答案有问题