各个数字的和排序
时间: 2024-02-11 16:08:15 浏览: 37
如果要按照每个数字的和从小到大排序,我们可以在 `digit_sum` 函数中对每个数字的每一位进行求和,并返回求和的结果。然后再按照这个结果进行排序。修改后的程序如下:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int digit_sum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
bool cmp(int a, int b) {
return digit_sum(a) < digit_sum(b);
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end(), cmp);
for (int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
return 0;
}
```
这样就可以按照各个数字的和从小到大排序了。
相关问题
C#一个字符串列表根据一个方法获取列表元素的各个的排序优先级数字然后根据获取的数字排序
你可以使用 LINQ 的 `Select` 方法获取列表元素的排序优先级数字,然后再使用 `OrderBy` 方法根据数字排序。以下是示例代码:
```csharp
List<string> list = new List<string> { "foo", "bar", "baz" };
// 获取列表元素的排序优先级数字
var prioritized = list.Select(value => GetPriority(value));
// 根据数字排序
var sorted = prioritized.OrderBy(priority => priority);
// 输出排序后的列表元素
foreach (var item in sorted)
{
Console.WriteLine(item);
}
// 获取排序优先级数字的方法
int GetPriority(string value)
{
switch (value)
{
case "foo":
return 2;
case "bar":
return 1;
case "baz":
return 3;
default:
return 0;
}
}
```
输出结果为:
```
bar
foo
baz
```
其中,`GetPriority` 方法根据列表元素的值返回相应的排序优先级数字,这里只是一个示例,你需要根据实际需求编写相应的逻辑。
6、编写一个函数SortData,对向量B中的所有整数根据其各位数字之和进行升序排序。 // 数字之和是指整数的各个数字之和,例如:123的数字之和为1 + 2 + 3 = 6。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int DigitSum(int n) { // 计算数字之和
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
bool Compare(int a, int b) { // 比较数字之和
return DigitSum(a) < DigitSum(b);
}
void SortData(vector<int>& B) { // 排序
sort(B.begin(), B.end(), Compare);
}
int main() {
vector<int> B = {123, 54, 789, 12};
SortData(B);
for (int i = 0; i < B.size(); i++) {
cout << B[i] << " ";
}
cout << endl;
return 0;
}
阅读全文