这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在 int 范围内)。于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就是设计并实现这个简化问题的解决方案。 输入格式: 输入在第一行中给出 2 个正整数,依次为 N ( ≤ 1 0 4 ) 和 M ( ≤ 1 0 2 ) N(≤10^ 4 )和 M(≤10^ 2 )N(≤10 4 )和M(≤10 2 ),对应功能模块的个数和系列测试输入的个数。 随后 N 行,每行给出一个功能模块的 M 个对应输出,数字间以空格分隔。 输出格式: 首先在第一行输出不同功能的个数 K。随后 K 行,每行给出具有这个功能的模块的个数,以及这个功能的对应输出。数字间以 1 个空格分隔,行首尾不得有多余空格。输出首先按模块个数非递增顺序,如果有并列,则按输出序列的递增序给出。 注:所谓数列 { A 1 , . . . , A M A_1 , ..., A_MA 1 ,...,A M } 比 { B 1 , . . . , B M B_1 , ..., B_MB 1 ,...,B M } 大,是指存在 1 ≤ i < M 1≤i<M1≤i<M,使得 A 1 = B 1 , . . . , A i = B i A_1 =B_1 ,...,A _i =B_iA 1 =B 1 ,...,A i =B i 成立,且 A i + 1 > B i + 1 A_i+1 >B_i+1A i +1>B i +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 ———————————————— 版权声明:本文为CSDN博主「Eternity_GQM」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/eternity_memory/article/details/123548686
map<vector<int>,int> mp; struct dian{ int val; vector<int>p; bool operator <(const dian &t)const { if(val==t.val) return p<t.p; return val>t.val; } }node[M];
map,结构体的强大应用。 map里面存 vector, sort里面直接排序vector。