- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在将结果保存到输出文件时遇到问题。可能功能有问题,但我找不到它并修复它。有人知道出了什么问题吗?
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int **str;
int *tab;
void read(){
int n = 1;
char help_sign;
FILE *fp = fopen("In0303.txt", "r");
if(fp == NULL){
printf("Blad odczytu z pliku!");
}
while((help_sign = fgetc(fp)) != EOF){
if (help_sign == '\n'){
n++;
}
}
fclose(fp);
}
void gen(){
int i, n;
int **str;
str =(int**)malloc(n*sizeof(int*));
for (i = 0; i < n; i++){
str[i] = (int*)malloc(4*sizeof(int));
}
}
void load_date(){
int i, n;
int **str;
FILE *fp = fopen("In0303.txt", "r");
for (i = 0; i < n; i++){
fscanf(fp, "%d" , &str[i][0]);
fscanf(fp, "%d" , &str[i][1]);
fscanf(fp, "%d" , &str[i][2]);
str[i][3]=0;
}
fclose(fp);
}
void gen_tab(){
int i, n, k = 0;
int **str;
int *tab;
for (i = 0; i < n; i++){
if (str[i][0] > k) k = str[i][0];
if (str[i][1] > k) k = str[i][1];
}
tab = (int*)malloc(k*sizeof(int));
for (i = 0; i < k; i++){
tab[i] = i + 1;
}
}
void sort(){
int i, n, j,tmp;
int **str;
for (i = 0; i < n-1; i++)
for (j = i+1; j < n; j++){
if (str[i][2] > str[j][2]){
tmp = str[i][0];
str[i][0] = str[j][0];
str[j][0] = tmp;
tmp = str[i][1];
str[i][1] = str[j][1];
str[j][1] = tmp;
tmp = str[i][2];
str[i][2] = str[j][2];
str[j][2] = tmp;
}
}
}
int min(int x, int y){
if (x > y) return y;
else return x;
}
int max(int x, int y){
if (x < y) return y;
else return x;
}
void make(){
int i, j, min1, max1, p, q, n, k;
int *tab;
int **str;
for (i = 0; i < n; i++){
if (tab[((str[i][0])-1)] != tab[((str[i][1])-1)]){
str[i][3] = 1;
min1 = min(tab[((str[i][0])-1)], tab[((str[i][1])-1)]);
max1 = max(tab[((str[i][0])-1)], tab[((str[i][1])-1)]);
for (j = 0; j < k; j++){
if (tab[j] == max1)
tab[j] = min1;
}
}
}
}
void save(){
int i, n;
int **str;
int *tab;
FILE *g = fopen("Out0303.txt","w");
for (i = 0; i < n; i++){
if (str[i][3] == 1){
fprintf(g, "%d ", str[i][0]);
fprintf(g, "%d ", str[i][1]);
fprintf(g, "%d\n", str[i][2]);
}
}
fclose(g);
}
int main(){
read();
gen();
load_date();
gen_tab();
sort();
make();
save();
printf("Wyniki zapisane do pliku!\n");
free(str);
free(tab);
return 0;
}
这是输入文件(“In0303.txt”):
9 17
2 3 8 4 9 8
1 3 3 6 4 5 9 6
2 6 4 4 9 1
2 5 3 4 5 3 9 2
4 3 6 1 9 5
5 1 7 5 9 2
6 5 8 4 9 2
1 4 7 4 9 2
1 8 2 6 3 1 4 2 5 5 6 2 7 2 8 2
这是应该在输出文件中创建的内容:(“Out0303.txt”):
17
3 9 [1]
5 6 [1]
4 9 [2]
6 9 [2]
7 9 [2]
8 9 [2]
1 2 [3]
1 8 [4]
最佳答案
Offhand - 在你的保存函数中,你没有分配给“n”
有点膨胀。您似乎想将“n”用作全局变量,但您正在声明它的本地实例,因此该值不会在函数中保留。你可以让它成为全局性的或传递它。
关于c - C 中的 Kruskal 算法 - 无法保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617548/
我正在尝试用 Python (scipy) 替换 Python 脚本中的一些 rpy2 代码。在这种情况下,我需要用 (Python: kruskal.test() ) 替换 Kruskal-Wall
一 构建后的图 二 代码 package graph.kruskal; import java.util.ArrayList; import java.util.Collections; impor
一 点睛 构造最小生成树还有一种算法,即 Kruskal 算法:设图 G=(V,E)是无向连通带权图,V={1,2,...n};设最小生成树 T=(V,TE),该树的初始状态只有 n 个节点而无边的非
来这里之前我已经努力尝试并做了我的研究。下面的代码崩溃了,我怀疑滥用了 cout。 (这不应该是最好的实现,但暂时不是 pb) 有经验的人能看出问题出在哪里吗? 提前致谢 #include #inc
据说Kruskal构造MST的算法是贪心的,但是该算法选择的是全局最小值而不是局部最小值,这与Prim的算法不同。谁能解释一下 Kruskal 算法为何被视为贪婪算法? 最佳答案 我们在克鲁斯卡尔做什
假设G是一个有n个顶点的无向图,每对顶点之间有加权边。你能按以下结构构造一棵树吗: v_1-v_2-v_3-...-v_n 使得树中的每个节点对应于 G 中的一个顶点,并且每个节点除叶子外只有一个子节
我正在学习 Kruskal 的算法,我遇到了几个不同的实现,并且想知道它们之间的权衡是什么。两种实现方式如下: 实现一- 将图中的所有边放入优先队列 PQ- 从 PQ 中移除最小边 e - 如果 e
我对什么是 Kruskal 算法有了基本的了解,这就是我的发现: 该算法基本上是通过合并多棵树来构造一棵最小生成树,它首先根据边的权重对边进行排序。该算法从一个空子图开始,扫描边列表,如果不创建循环,
我正在研究来自 this geeksforgeeks article 的 Kruskal 的 MST .给出的步骤是: 按权重的非降序对所有边进行排序。 选择最小的边。检查它是否与目前形成的生成树形成
我有一个任务,我需要从单元格网格创建一个迷宫。 我使用 Randomized Kruskal's algorithm 成功地做到了如 Wiki 页面所述并使用 Disjoint-set data st
我找到了一个创建 makes 和 finds 方法的教程 public void makeSet(long data) { Node node = new Node();
我发现最小生成树 (MST) 的某些边使用联合查找方法重叠,详见 here ,经过修改 - 使用 float 而不是 integer 权重,使用 integer 值而不是 string ID。下图中的
我打算用 C++ 实现 Kriskal 的算法,但是... Unhandled exception at 0x0127160d in DAA.exe: 0xC0000005: Access viola
我正在计算这样的 kruskal 算法的时间复杂度(请参阅附件中的算法) T(n) = O(1) + O(V) + O(E log E) + O(V log V) = O(E log E)
我正在尝试尽可能高效地实现 Kruskal。 对于运行时效率,使用堆或排序算法对边进行排序有区别吗? 还有哪些其他技术可以使 Kruskal 算法更有效地工作? 最佳答案 这取决于您要解决的确切问题。
我如何使用 Kruskal 算法计算 im R(3.0.0 - Linux x32) 最小生成树? 我使用 igraph (0.6.5) 库创建一个加权全图,如下所示: set.seed(123456
当图有多个连通分量时,我不确定如何实现 Kruskal 算法 根据我对 Kruskal 算法的理解,它反复将最小边添加到集合中。然后,当检查完所有边时,它返回最多的边集。 但是,如果我的图表断开连接怎
虽然我在工作an assignment在 Stanford CS106B C++ 类(class)上,但我大量坚持实现 Kruskal 算法以找到最小生成树。 更具体地说,我无法弄清楚确定是否向树添加
由于 Kruskal 算法是贪心算法,这意味着我们有时可能得不到真正的最小路径。 但是谁能举出一个例子来说明这个算法没有得到最小值? 我不是在寻找复杂性,只是需要一个确实没有得到最佳解决方案的案例。
Here is a Graph我需要使用 Prim 的 和 Kruskal 的 算法找到 G 的最小生成树。 我使用 Prim 算法找到了最小生成树。 Here is my attempt . 我在使
我是一名优秀的程序员,十分优秀!