YAN


私信TA

用户名:dotcpp0719624

访问量:122

签 名:

等  级
排  名 24720
经  验 611
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 BiliBili大学
专  业

  自我简介:

解题思路:
不使用结构体,而使用vector向量作为不同个数封闭图形的存放处,好处就是不限制同一个数封闭图形的次数。


注意事项:

sort(num[i].begin(), num[i].end());是对每一列进排序,相当于对相同个数封闭图形的大小进行排序。


参考代码:

#include <bits/stdc++.h>
using namespace std;

const int maxn = 2e5 + 10, mod = 998244353;
vector <int> num[21];

int f[11] = {1, 0, 0, 0, 1, 0, 1, 0, 2, 1};

int calsum(int x) {
	if (x == 0)
		return 1;
	int sum = 0;
	while (x) {
		sum += f[x % 10];
		x /= 10;
	}
	return sum;
}

int main() {
	int n, ans[maxn] = {0};
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> ans[i];
		num[calsum(ans[i] % mod)].push_back(ans[i] % mod);
	}
	for (int i = 0; i <= 20; i++) {
		sort(num[i].begin(), num[i].end());
		for (int j = 0; j < num[i].size(); j++) {
//			sort(num[i].begin(), num[i].end()); 放这会超时
			cout << num[i][j] << ' ';
		}
	}
	return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »