zoukankan      html  css  js  c++  java
  • 《算法C语言实现》————快速-查找算法(quick-find algorithm)

      算法基础是一个整型数组,当且仅当第p个元素和第q个元素相等时,p和q时连通的。初始时,数组中的第i个元素的值为i,0<=i<N,为实现p与q的合并操作,我们遍历数组,把所有名为p的元素值改为q。我们也可以选择另外一种方式,把所有名为q的元素改为p。

      这个程序从标准输入读取小于N的非负整数对序列(对p-q表示"把对象β 连接到q"),并且输出还未连通的输入对。程序中使用数组id,每个元素表示一个对象,且具有以下性质,当且仅当p和q时连通的,id[p]和id[q]想等。为简化起见,定义N为编译时的常数。另一方面,也可以从输入得到它,并动态地为它分配id数组。

    /*
    @file   quickfind.c
    @brief  利用快速查找算法来解决小规模的连通性问题
    */
    #include <stdio.h>
    #define N 1000
    
    int main(void)
    {
        int i, p, q, t;
        int id[N];
        //初始化对象集合中元素的初始值
        for (i = 0; i < N; i++) id[i] = i;
        //循环读入整数对
        while (scanf_s("%d-%d", &p, &q) == 2)
        {
            //如果对象p与q是连通的,则从标准输入读取下一对整数对
            if (id[p] == id[q]) continue;
            //如果id[p]与id[q]的值不相等,则说明p-q是新对
            //则将所有原本与id[p]元素值相等的所有元素连接到q
            for (t = id[p], i = 0; i < N; i++)
            {
                if (id[i] == t)
                    id[i] = id[q];
            }
            //因为p-q是新对,所以输出这个对
            printf("New pair: %d-%d
    ", p, q);
        }
    
        return 0;
    }

    没明白这是干什么用的,就是遍历,赋值而已

  • 相关阅读:
    天气预报APP(2)
    天气预报APP(1)
    android ——网络编程
    android ——Intent
    android ——可折叠式标题栏
    5.1 类,实例,实现,方法
    5.0 面向对象
    python 基础
    模拟实现一个ATM + 购物商城程序
    python 基础
  • 原文地址:https://www.cnblogs.com/elliottc/p/6538130.html
Copyright © 2011-2022 走看看