problemscpp
A collection of my answers to algorithm problems in c++.
Public 成员函数 | Private 属性 | 所有成员列表
acwing::acwing4298类 参考

AcWing 4298. 搭档 更多...

#include <acwing.h>

Public 成员函数

bool find (int i)
 
int main (istream &cin, ostream &cout)
 

Private 属性

int * a = nullptr
 男孩魅力值 更多...
 
int * b = nullptr
 女孩魅力值 更多...
 
bool ** connected = nullptr
 邻接矩阵存图 更多...
 
bool * found = nullptr
 记录女孩是否已经被找到 更多...
 
int m = 0
 女孩数量 更多...
 
int * match = nullptr
 记录当前女孩所对应的男孩 更多...
 
int n = 0
 男孩数量 更多...
 

详细描述

AcWing 4298. 搭档

在文件 acwing.h1032 行定义.

成员函数说明

◆ find()

bool acwing::acwing4298::find ( int  i)

在文件 acwing.cpp3255 行定义.

3255 {
3256 for(int j = 0; j < m; j++) {
3257 if(connected[i][j] && !found[j]) {
3258 //可以配对且女孩未被找到
3259 found[j] = true;
3260 if(match[j] == -1 || find(match[j])) {
3261 //女孩没有配对的对象或女孩配对的对象可以找到其他对象去配对
3262 match[j] = i;//设置女孩j和男孩i配对
3263 return true;
3264 }
3265 }
3266 }
3267 return false;
3268 }
bool ** connected
邻接矩阵存图
Definition: acwing.h:1038
bool find(int i)
Definition: acwing.cpp:3255
int m
女孩数量
Definition: acwing.h:1034
int * match
记录当前女孩所对应的男孩
Definition: acwing.h:1039
bool * found
记录女孩是否已经被找到
Definition: acwing.h:1037

引用了 connected, find(), found, m , 以及 match.

被这些函数引用 find() , 以及 main().

◆ main()

int acwing::acwing4298::main ( istream &  cin,
ostream &  cout 
)

在文件 acwing.cpp3207 行定义.

3207 {
3208 cin >> n;
3209 a = new int[n];
3210 memset(a, 0, n * sizeof(int));
3211 for(int i = 0; i < n; i++) {
3212 cin >> a[i];
3213 }
3214 cin >> m;
3215 b = new int[m];
3216 found = new bool[m];
3217 match = new int[m];
3218 memset(b, 0, m * sizeof(int));
3219 memset(found, 0, m * sizeof(bool));
3220 memset(match, -1, m * sizeof(int));
3221 for(int i = 0; i < m; i++) {
3222 cin >> b[i];
3223 }
3224 connected = new bool *[n];
3225 for(int i = 0; i < n; i++) {
3226 connected[i] = new bool[m];
3227 for(int j = 0; j < m; j++) {
3228 if(abs(a[i] - b[j]) <= 1) {
3229 connected[i][j] = true;
3230 } else {
3231 connected[i][j] = false;
3232 }
3233 }
3234 }
3235
3236 int ans = 0;
3237 for(int i = 0; i < n; i++) {
3238 memset(found, 0, m * sizeof(bool));
3239 if(find(i)) {
3240 ans++;
3241 }
3242 }
3243 cout << ans;
3244 for(int i = 0; i < n; i++) {
3245 delete[] connected[i];
3246 }
3247 delete[] connected;
3248 delete[] a;
3249 delete[] b;
3250 delete[] found;
3251 delete[] match;
3252 return 0;
3253 }
int n
男孩数量
Definition: acwing.h:1033
int * a
男孩魅力值
Definition: acwing.h:1035
int * b
女孩魅力值
Definition: acwing.h:1036

引用了 a, b, connected, find(), found, m, match , 以及 n.

类成员变量说明

◆ a

int* acwing::acwing4298::a = nullptr
private

男孩魅力值

在文件 acwing.h1035 行定义.

被这些函数引用 main().

◆ b

int* acwing::acwing4298::b = nullptr
private

女孩魅力值

在文件 acwing.h1036 行定义.

被这些函数引用 main().

◆ connected

bool** acwing::acwing4298::connected = nullptr
private

邻接矩阵存图

在文件 acwing.h1038 行定义.

被这些函数引用 find() , 以及 main().

◆ found

bool* acwing::acwing4298::found = nullptr
private

记录女孩是否已经被找到

在文件 acwing.h1037 行定义.

被这些函数引用 find() , 以及 main().

◆ m

int acwing::acwing4298::m = 0
private

女孩数量

在文件 acwing.h1034 行定义.

被这些函数引用 find() , 以及 main().

◆ match

int* acwing::acwing4298::match = nullptr
private

记录当前女孩所对应的男孩

在文件 acwing.h1039 行定义.

被这些函数引用 find() , 以及 main().

◆ n

int acwing::acwing4298::n = 0
private

男孩数量

在文件 acwing.h1033 行定义.

被这些函数引用 main().


该类的文档由以下文件生成: