ICPC--1206: 字符串的修改&1207:字符排列问题

1206: 字符串的修改题目描述设A和B是两个字符串 。 我们要用最少的字符操作次数 , 将字符串A转换为字符串B 。 这里所说的字符操作共有三种:
\1. 删除一个字符; \2. 插入一个字符; \3. 将一个字符改为另一个字符 。对任给的两个字符串A和B , 计算出将字符串A变换为字符串B所用的最少字符操作次数 。
输入第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于200 。
输出只有一个正整数 , 为最少字符操作次数 。
样例输入【ICPC--1206: 字符串的修改&1207:字符排列问题】sfdxbqwgfdgw样例输出4代码#include using namespace std;int main(){int dp[210][210];char a[210], b[210];int i, j, len1, len2;scanf("%s", a);scanf("%s", b);len1 = strlen(a);len2 = strlen(b);for (i = 0; i <= len1; i++)dp[i][0] = i;for (i = 0; i <= len2; i++)dp[0][i] = i;for (i = 1; i <= len1; i++){for (j = 1; j <= len2; j++){if (a[i-1] == b[j-1])//相同dp[i][j] = dp[i - 1][j - 1];elsedp[i][j] = min(min(dp[i - 1][j] + 1, dp[i][j - 1] + 1), dp[i - 1][j - 1] + 1);}}cout << dp[len1][len2] << endl;return 0;}1207: 字符排列问题题目描述有n个字母 , 列出由该字母组成的字符串的全排列(相同的排列只计一次) 。
输入第一行输入是字母个数n , 1<=n<=20 。 接下来一行输入的是待排列的n个字母 。
输出计算出的n 个字母的所有不同排列总数
样例输入4aacc样例输出6代码#include#includeint j(int n){int sum = 1;for (int i = 1; i <= n; i++)sum *= i;return sum;}int main(){int n, b[27] = { 0 };char a[21];scanf("%d%s",int sum = j(n);int len = strlen(a);for (int i = 0; i < len; i++)b[a[i] % 97]++;for (int i = 0; i < 26; i++)if (b[i] > 0)sum /= j(b[i]);printf("%d\n", sum);return 0;}