笔试总结——0310华为软笔C++
题目3:N个广播站,站点之间有些有连接,有些没有。有连接的站点在接受到广播后会互相发送。给定一个N*N的二维数组matrix,数组的元素都是字符’0’或者’1’。matrix [ i ][ j ]= ‘1’,则代表 i 和 j 站点之间有连接,matrix [ i ][ j ] = '0’代表没连接,现在要发一条广播,问初始最少给几个广播站发送,才能保证所有的广播站都收到消息;
输入:一行数据代表二维数组的各行,用逗号分隔。保证每个字符串所含的字符数一样
例如:
输入:110,110,001
输出:2
//============================分割线============================
真的垃圾,就参数输入这块就卡了半小时,学艺不精;
源码附上:
#include<iostream>
#include<string>
#include<vector>
#include<bitset>
#include <sstream>
using namespace std;
//最少通知基站数
//110,110,001 2
int getRank(vector<int> data,int Row) {
//求二进制矩阵的秩,即消元,最后看斜对角线上有几个1
int r = 0, c = 0;
for(c=0; c < Row && r < Row; c++, r++) {
//从每一列开始,将每一列消到只有1个1或者全0
int i = 0;
for(i = r; i < Row; i++) {
//寻找这一列第一个非0的行
if(data[i*Row+c]