【发布时间】:2018-08-17 17:12:57
【问题描述】:
我正在尝试重新创建 Kruskal 和 Prim 的算法。为此,我需要输入一个加权邻接矩阵。
加权邻接矩阵的示例输入是:
0 0 355 0 695 0 0 0
0 0 74 0 0 348 0 0
355 74 0 262 0 269 0 0
0 0 262 0 0 242 0 0
695 0 0 0 0 151 0 0
0 348 269 242 151 0 83 306
0 0 0 0 0 83 0 230
0 0 0 0 0 306 230 0
为了更加清晰,这些数字已经过少量编辑。每个数字之间应该有一个空格。
至于接受这些值并记录它们,我可以使用以下代码接受其中的一行:
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string temp;
string buf;
vector<string> matrix;
cout << "Matrix: ";
getline(cin, temp);
stringstream ss(temp);
while(ss >> buf)
{
matrix.push_back(buf);
}
for(int i = 0; i < matrix.size(); i++)
{
cout << matrix[i] << " ";
}
cout << endl;
return 0;
}
示例输出:
Matrix: 0 0 355 0 695 0 0 0
0 0 355 0 695 0 0 0
关于我的问题,我怎样才能要求正确数量的矩阵线并记录所有它们?
在示例的情况下,我如何再请求 7 行矩阵值(在接受值之前不需要 cout/cin 语句)?
【问题讨论】:
-
您的问题只是“如何从
std::cin读取7 行”吗? ... -
有点像。我需要多读 7 行,但我必须弄清楚要读多少行。
-
只需让用户给你一些行和列,然后读取所需数量的数据迭代它们。这些提示应该足以完成您的任务。
-
您的问题与矩阵无关。请花时间适当地抽象您要解决的问题。询问那个问题,一旦你在那里(或进行搜索并找到解决方案)。