PAT B1064朋友数

这道题也不难,记录下来是对比一下,自己的解法和别人用set的解法,熟悉一下set的用法。

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int N, a;
    int hashTable[50] = {0};
    scanf("%d", &N);
    while (N--) {
        int temp = 0;
        scanf("%d", &a);
        while (a) {
            temp += a % 10;
            a = a / 10;
        }
        hashTable[temp] = 1;
    }
    int ans = 0;
    for (int i = 0; i < 50; i++) {
        if (hashTable[i] != 0) {
            ans++;
        }
    }
    printf("%d\n", ans);
    int j = 0;
    for (int i = 0; i < 50; i++) {
        if (hashTable[i] != 0) {
            j++;
            printf("%d", i);
            if (j < ans) {
                printf(" ");
            }
        }
    }
    return 0;
}

网上看到别人用的set,更简练一些。

#include<iostream>
#include<set>
using namespace std;
int digitTotal(int n) {
    int total = 0;
    while (n) {
        total += n % 10;
        n /= 10;
    }
    return total;
}
int main() {
    int N, a;
    set<int> ansSet;
    scanf("%d", &N);
    while (N--) {
        scanf("%d", &a);
        ansSet.insert(digitTotal(a));
    }
    printf("%d\n", ansSet.size());
    for (auto it = ansSet.begin(); it != ansSet.end(); it++) {
        if (it != ansSet.begin())
            printf(" ");

        printf("%d", *it);
    }
    return 0;
}

我觉得值得我学习的地方用三处

  • 函数的封装
  • set的使用
  • auto的使用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,315评论 2 89
  • abandon, desert, forsake, leave, give up abandon :强调永远或完全...
    sunxiaohang阅读 3,790评论 0 3
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,084评论 2 59
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,552评论 4 61
  • 如何用Facebook graphic api上传视频:http://developers.facebook.co...
    百事小武阅读 3,810评论 1 15

友情链接更多精彩内容