本體的解題思路是,定義一個string類型的vector向量容器,把數字轉換成字符串,然後把字符串添加到向量中,然後迭代vector向量,遍歷向量中的每一個string。定義一個整型數組,這裏採用了一個小技巧,整型數組的下標就分別對應着0~9的數,a[i]保存i出現的次數。
#include <vector>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <sstream>
using namespace std;
int a[10];
//數字轉字符串
string num2str(int i)
{
stringstream ss;
ss<<i;
return ss.str();
}
int main(int argc, const char * argv[]) {
int n;
vector<string> v;
cin >> n;
while (n--) {
int m;
cin >> m;
string s;
for (int i = 1; i <= m; i++) {
s = num2str(i); //數字轉字符串
v.push_back(s); //把轉換後得到的字符串放到string類型的向量中
}
vector<string>::iterator it; //定義迭代器
for (it = v.begin(); it != v.end(); it++) {
s = *it;
for (int i = 0; i < s.length(); i++) {
a[s[i] - 48]++;
}
}
for (int i = 0; i <= 9; i++) {
if (i == 9) {
cout << a[i] << endl;
} else {
cout << a[i] << " ";
}
}
v.clear(); //清空向量
memset(a, 0, sizeof(a)); //清空數組
}
return 0;
}