gpt4 book ai didi

C++,读取和保存大量数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:47:00 25 4
gpt4 key购买 nike

我必须解决一个问题,需要您的帮助,在此先感谢您。如您所见,标题几乎说明了一切。有一个文件“domes.in”(这是一个文本文件),其中包含 10.000.000 对整数(1 - 100.000),所以在第一部分,我必须在不到 1 秒的时间内保存所有这些数字.

首先,我尝试创建一个包含 20.000.000 个位置的 int 数组,以便我可以一个一个地保存数字。数组的大小太大,以至于程序没有响应。

在看代码之前先看任务,但是请只回答我的问题,不要贴任何代码,因为这是一个在线竞赛的问题,我想自己写。

#include <fstream>
using namespace std;

int main()
{
int n, m, a, b; //N(Value) M(Pairs)
int t = 0;
int r = 0;
int j;

ifstream infile("domes.in");
infile >> n >> m; //N = 100.000 M = 10.000.000
int domes[m*2];

for (j=0; j<m; j++) //For 1 to 10.000.000
{
infile >> a >> b; //Save 10.000.000 Integers
domes[t++] = a;
domes[t++] = b;
}
for (j=1; j<=n; j++) //For J = 1 - 100.000
{
int i=0;
for (int k=0; k<t; k++) //If the point J is appeared
if (domes[k] == j) //+1 Link
i++;

if (i == 1) //If Links < 2 (of number J)
r++; //+1 Point is connected with less than 2 points
} //Else move on to ++J
infile.close();

ofstream outfile("domes.out");
outfile << r;
return 0;
}

现在它似乎可以工作,但程序再次没有响应(在运行时,in 引发错误,表明程序已停止运行。代码中还有任何其他构建错误或错误)。

我做错了什么?

文本文件:100000 10000000

2344 3444

3345 4564

5566 9455//100.000以内的随机整数

//........

//编辑:我从代码中删除了结构“DOMES”,因为它是同一件事

任务:我会用我自己的话来解释它,因为它很复杂。 map 上有 100.000 个点。这些点是相连的(有 10.000.000 个链接)。我必须找到只有一个连接的点(每个点至少有 1 个连接)。

例如:

5 4 (N = 5, M = 4) N(最大值) M(对)

1 2

2 3

4 5

3 4

有 2 个点具有单一连接:1 和 5(1 与 2 相连)和(5 与 4 相连)。其余点至少连接两次:

2: 1-2, 2-3

3:2-3、3-4

4: 4-3, 4-5

最佳答案

当谈到大数据的 I/O 时,C++ 流比它们的 C 流要慢。我相信你可以用 fopen() 加快写作速度和 fwrite()来自 <cstdio>很多。通过这样做,您可以一次性写入整个数组,并且可能不会出现崩溃问题。

关于C++,读取和保存大量数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20801888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com