首页 > 其他分享 >PTA L2-039 清点代码库

PTA L2-039 清点代码库

时间:2024-03-30 16:33:07浏览次数:24  
标签:输出 int 个数 PTA ++ 039 L2 ans include

code.jpg

上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”

这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在 int 范围内)。于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就是设计并实现这个简化问题的解决方案。

输入格式:

输入在第一行中给出 2 个正整数,依次为 N(≤104)和 M(≤102),对应功能模块的个数和系列测试输入的个数。

随后 N 行,每行给出一个功能模块的 M 个对应输出,数字间以空格分隔。

输出格式:

首先在第一行输出不同功能的个数 K。随后 K 行,每行给出具有这个功能的模块的个数,以及这个功能的对应输出。数字间以 1 个空格分隔,行首尾不得有多余空格。输出首先按模块个数非递增顺序,如果有并列,则按输出序列的递增序给出。

注:所谓数列 { A1​, ..., AM​ } 比 { B1​, ..., BM​ } 大,是指存在 1≤i<M,使得 A1​=B1​,...,Ai​=Bi​ 成立,且 Ai+1​>Bi+1​。

输入样例:

7 3
35 28 74
-1 -1 22
28 74 35
-1 -1 22
11 66 0
35 28 74
35 28 74

输出样例:

4
3 35 28 74
2 -1 -1 22
1 11 66 0
1 28 74 35

题目的意思换句话说是:

有n个物品,每个物品有m个特点(用一个数字代替)。

首先输出有几类物品(特点相同的认为是同一类物品)。其后每行输出每类物品的个数和特征。

输出时首先按物品个数非递增顺序,如果有并列,则按输出特征点的递增序给出。

做法:

1.用map统计每类物品

2.对每类物品按要求输出

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
#include <vector>

using namespace std;

const int N = 10010;

map<vector<int>,int> ha;

struct Node
{
    vector<int> trait;
    int sum;
    bool operator<(const Node& t) const//题目要求的排序
    {
        if(sum != t.sum) return sum > t.sum;
        else return trait < t.trait;
    }
}ans[N];
int idx;

int main()
{
    int n = 0,m = 0;
    scanf("%d%d",&n,&m);
    for(int i = 0;i < n;i++)
    {
        vector<int> tmp;
        for(int j = 0;j < m;j++)
        {
            int t = 0;
            scanf("%d",&t);
            tmp.push_back(t);
        }
        ha[tmp]++;//统计共同特征的个数
    }
    for(auto& x : ha) ans[idx++] = {x.first,x.second};//将统计好的数据取出
    sort(ans,ans + idx);//排序
    
    printf("%d\n",idx);
    for(int i = 0;i < idx;i++)
    {
        printf("%d",ans[i].sum);
        for(int j = 0;j < m;j++) printf(" %d",ans[i].trait[j]);
        puts("");
    }
    return 0;
}
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
#include <vector>
#include <set>

using namespace std;

const int N = 10010;

map<vector<int>,int> ha;

set< pair<int,vector<int>> >ans;

int main()
{
    int n = 0,m = 0;
    scanf("%d%d",&n,&m);
    for(int i = 0;i < n;i++)
    {
        vector<int> tmp;
        for(int j = 0;j < m;j++)
        {
            int t = 0;
            scanf("%d",&t);
            tmp.push_back(t);
        }
        ha[tmp]++;//统计共同特征的个数
    }
    for(auto& x : ha) ans.insert({-x.second,x.first});//将统计好的数据取出
    
    printf("%d\n",ans.size());
    for(auto& x : ans)
    {
        printf("%d",-x.first);
        for(auto t : x.second) printf(" %d",t);
        puts("");
    }
    return 0;
}

结果: 

标签:输出,int,个数,PTA,++,039,L2,ans,include
From: https://blog.csdn.net/m0_75081848/article/details/137174028

相关文章

  • PTA L2-040 哲哲打游戏
    哲哲是一位硬核游戏玩家。最近一款名叫《达诺达诺》的新游戏刚刚上市,哲哲自然要快速攻略游戏,守护硬核游戏玩家的一切!为简化模型,我们不妨假设游戏有 N 个剧情点,通过游戏里不同的操作或选择可以从某个剧情点去往另外一个剧情点。此外,游戏还设置了一些存档,在某个剧情点可以将玩......
  • L2-046 天梯赛的赛场安排 团体程序设计天梯赛-练习集 c++ 易懂 模拟
    天梯赛使用OMS监考系统,需要将参赛队员安排到系统中的虚拟赛场里,并为每个赛场分配一位监考老师。每位监考老师需要联系自己赛场内队员对应的教练们,以便发放比赛账号。为了尽可能减少教练和监考的沟通负担,我们要求赛场的安排满足以下条件:每位监考老师负责的赛场里,队员人数不得......
  • PTA-树的遍历(python实现)
    自己做题过程中的一些想法,做一个记录,方便以后查看,如果能给读者一些启发也是极好的。欢迎大家的批评指正和交流讨论。题目描述:给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是......
  • clean maven工程报错: Cannot find JRE '1.8 (1)'. You can specify JRE to run maven
    在双击Maven的clean时,报错:CannotfindJRE'1.8(1)'.YoucanspecifyJREtorunmavengoalsinSettings原因可能是自己之前下载的是JDK17,并且IDEA认为该JDK为默认JDK,而我的Maven项目设置使用的是JDK8,因此报错。解决方案如下:点击File-settingBuild,Execution,Deploy......
  • L2-047 锦标赛
    这题没做出来,查了一些博客,下面是我比较能接受的一种写法。读完题可以发现这是一个满二叉树,并且可以得到每场比赛失败者的信息(决赛是胜利者和失败者都可以得到)对于一场比赛,它的胜利者要么是左孩子中的胜利者,要么是右孩子中的胜利者,那我们就可以先假设是左孩子的胜利者,如果不行就......
  • CentOS6 通过iptables配置防火墙
    配置规则允许ip访问iptables-AINPUT-ptcp-s<IP地址>--dport<端口号>-jACCEPT限制ip访问iptables-AINPUT-ptcp-s<IP地址>--dport<端口号>-jDROP保存到文件servicesiptablessave如果有DROP命令需要手动放到规则最下边vi/etc/sysconfig/iptables......
  • Uncaught (in promise) DOMException: Failed to execute 'setRequestHeader' on 'XML
    根据错误提示"Uncaught(inpromise)DOMException:Failedtoexecute'setRequestHeader'on'XMLHttpRequest':Theobject'sstatemustbeOPENED.",你遇到了一个错误,该错误表明在调用setRequestHeader方法时,XMLHttpRequest对象的状态必须是已打开(OPENED)的状态。解决此问......
  • kube-proxy模式 iptables和ipvs对比
    kube-proxy的ipvs模式和iptables模式在Kubernetes集群中各有优劣,主要体现在性能、功能和支持的协议方面。1.性能:IPVS模式:由于IPVS是专门为负载均衡设计的,它在性能方面通常优于iptables。IPVS使用基于哈希的负载均衡算法,能够快速处理大量的并发连接,其连接处理的名义计算复杂度......
  • PTA:滤字符
    以指针的方式,将某个字符串中出现的特定字符删去,然后输出新的字符串。输入格式:首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入一个字符串s和一个非空格字符t。其中s的长度不超过100,且只包含英文字母。输出格式:对于每组测试,将删掉t后新得......
  • L2-025 分而治之(与L2-013 红色警戒 差不多一模一样)
    原题链接题目:分而治之,各个击破是兵家常用的策略之一。在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破。为此参谋部提供了若干打击方案。本题就请你编写程序,判断每个方案的可行性。输入输出格式:输入在第一行给出两个正整数N......