#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>

using namespace std;
int n, zui;
vector<vector<int> > a(10); 
vector<int> nums;
 
int getnum(int need, int where) {
	return (need / (int)pow(10, where)) % 10;
}

void cleara() {
	for (int d9=0;d9<=9;d9++) a[d9].clear();
}

int main() {
	cin >> n;
	for (int d1=0;d1<n;d1++) {
		int tmp;
		cin >> tmp;
		
		zui = max(zui, (int)(1 + log10(tmp))); // 最大位数 
		nums.push_back(tmp);
		
	}
	a.resize(n);
	for (int d2=0;d2<zui;d2++) {
		cleara();
		for (int d5=0;d5<=n;d5++){
			int num = nums[d5];
			a[getnum(num, d2)].push_back(num);
		} 
		nums.clear();
		for (int d3=0;d3<=9;d3++) {
			for (size_t d4=0;d4<a[d3].size();d4++) {
				nums.push_back(a[d3][d4]);
			}
		}
	}
	for (int d6=1;d6<=n;d6++) {
		cout << nums[d6] << " ";
	}
	return 0;
}

vector<vector<int> > a(10); 首先定义了一个二维数组(vector),此处的a(10)中的10为二维数组的行数;

getnum()函数为获取一个数字指定位数的函数

haihaihai

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注