给定一个k位整数N,请编写程序统计每种不同的个位数字出现的次数,用C++的动态规划算法
时间: 2024-03-03 14:51:06 浏览: 65
程序员面试金典 – 面试题 17.24. 最大子矩阵(转成一维最大子序和 DP)
首先,我们可以将k位整数N转化为字符串,然后遍历字符串中的每一个字符,统计每种不同的个位数字出现的次数。
动态规划算法的思路如下:
1. 定义一个长度为10的数组count,用于记录每种不同的个位数字出现的次数,初始值全部为0。
2. 从字符串的末尾开始遍历,每遍历到一个字符,就将对应的count数组元素加1。
3. 遍历完成后,count数组中的每个元素即为每种不同的个位数字出现的次数。
C++代码实现如下:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string str;
cin >> str;
int len = str.length();
int count[10];
memset(count, 0, sizeof(count));
for (int i = len - 1; i >= 0; i--) {
int num = str[i] - '0';
count[num]++;
}
for (int i = 0; i < 10; i++) {
if (count[i] != 0) {
cout << i << ":" << count[i] << endl;
}
}
return 0;
}
```
需要注意的是,以上代码没有进行输入格式验证,实际使用时需要根据题目要求进行相应的输入格式验证。
阅读全文