首页 > 编程语言 >华为实习4.10机考第二题C++代码

华为实习4.10机考第二题C++代码

时间:2024-04-16 14:44:05浏览次数:30  
标签:4.10 return int 矩阵 C++ 机考 相似 include

考的是简单的并查集

这道题考法就是并查集,若两个图片相似度大于0,则将他们放到一个家族中,同时维护家族的相似度总和。

注意 M 矩阵是对称矩阵,所以需要避免重复维护相似度,因此可以只针对 M 矩阵的下三角矩阵或上三角矩阵中的连接块,计算相似度总和;或考虑整个 M 矩阵,然后相似度总和除以2。

代码如下:

#include<iostream>
#include<unordered_set>
#include<vector>
#include<algorithm>
using namespace std;

const int N = 910;

int f[N], sum[N] , M[N][N];

int find(int x){
	if(x != f[x]) f[x] = find(f[x]);
	return f[x];
}

bool cmp(int x,int y){
	return x > y;
}

int main(){
	unordered_set<int> Set;
	vector<int> v;
	int n ;
	cin >> n ;
	
	for(int i = 1 ; i <= n ; i ++) {
		f[i] = i;
		sum[i] = 0;
	}
	
	for(int i = 1 ; i <= n ; i ++){
		for(int j = 1 ; j <= n ; j ++){
			scanf("%d",&M[i][j]);
		}
	}
	
	for(int i = 1 ; i <= n ; i ++){
		for(int j = 1 ; j <= i ; j ++){
			if(M[i][j]) {
				int t = sum[find(i)] + M[i][j];
				f[find(i)] = find(j);
				sum[find(i)] += t;
			}
		}
	}
	
	for(int i = 1 ; i <= n ; i ++) Set.insert(sum[find(i)]);
	
	for(auto it: Set) v.push_back(it);
	
	sort(v.begin(),v.end(),cmp);
	
	for(int i = 0 ; i < v.size() ; i ++) printf("%d ",v[i]);
	
	return 0;
}

标签:4.10,return,int,矩阵,C++,机考,相似,include
From: https://www.cnblogs.com/ZhaoHaoFei/p/18138141

相关文章

  • C++发票识别、发票查验接口示例,您的“发票管理专家”
    发票识别+发票查验接口。当财务人员在进行发票的数字化管理时,仅需一键上传发票图片,翔云发票识别接口即可快速、精准对发票的全票面信息进行提取,翔云发票查验接口可根据识别接口提取的发票信息实时联网进行真伪查验。助财务工作者从发票海洋中解脱出来,提升发票管理效率与准确率......
  • C++身份核验接口代码、身份证OCR、身份证实名认证API
    实名认证是什么意思呢?一般指的是对用户资料真实性进行的验证审核,这样有利于建立完善且可靠的互联网环境。如果交易双方使用的都是虚假信息,那么在诸多环节会存在很大的风险。另外,还有游戏平台对玩家进行实名认证,防止未成年人注册。实名认证有利于网络绿化,所以在互联网发展......
  • 结对编程 c++语言实现四则运算练习题
    结对同学:2252813程序要求:两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0-100之间通过阅读题目要求,我们决定使用c++语言完成编程,需要满足两个功能,首先生成一个包含两个运算符的算式,参与运算的数字在100之内。下一步检查答案是否正确,并且保证答......
  • C/C++项目中.h和.inc文件区别
    原问题:Differencebetween.hfilesand.incfilesincC/C++的标准惯例是将class、function的声明信息写在.h文件中。.c文件写class实现、function实现、变量定义等等。然而对于template来说,它既不是class也不是function,而是可以生成一组class或function的东西。编译器(compiler......
  • C++动态内存分配/malloc/new
    0前言这部分确实是面试老八股了,不过我还是记录一下1内存分区在C语言中,将内存分为程序代码区+数据区,其中数据区又分为静态存储区和动态存储区在C++中,分为五种:动态存储区:栈区:存放局部变量,由编译器自动分配释放,程序员不能操作堆:由程序员使用malloc/new申请,用free/delete......
  • 结对编程-C++四则运算
    合作伙伴:22528071.项目要求要求实现四则运算练习题。这个程序有很多种实现方式:·C/C++·C#/VB.net/Java.Excel·UnixShell.Emacs/Powershell/Vbscript.Perl·Python·两个运算符,100以内的数字,不需要写答案。·需要检查答案是否正确,并且保证答案在0……100......
  • C++ 默认参数与引用传递:语法、用法及示例
    C++默认参数默认参数概述在C++中,函数参数可以拥有默认值。这意味着,在调用函数时,如果省略了某个参数,那么将使用为该参数指定的默认值。设置默认参数默认参数值使用等号=符号进行设置,位于参数声明的类型之后。例如:voidmyFunction(stringcountry="Norway");在这个例......
  • C++_内存模型和函数以及类
    C++内存模型函数函数与编译器类成员变量class内部通过 static修饰变量时,表示该变量为静态成员变量,必须在类外定义 staticconst修饰变量时,表示该变量为静态成员常量,可以在类内初始化,或者在类外初始化 staticconstexpr修饰变量时,表示该......
  • 华为实习4.10机考第一题C++代码
    华为2024.4.10机考第一题C++代码第一题是一个关于字符串的模拟,但是对于C++来说,处理起来还是比较麻烦的。难点就是在输入时各字符串是用逗号分割的。#include<iostream>#include<unordered_map>#include<sstream>#include<vector>#include<algorithm>usingnamespacestd;......
  • 记录解决VS 2022调试C++ DLL项目时卡顿的问题
    项目结构运行时为DotNet6的C#通过Cli/C++去调用C++的DLL。问题表现在VisualStudio2022中调试C++DLL代码时,按下F5、F10、F11跳转到下一行时VS卡顿会2秒左右,体验非常不好。问题原因然后发现原因是项目的配置属性中,调试那一行,调试器类型选择的是“自动”。解决此问题的方法......