一:题目

给出m(1到10000之间)个IP地址,求他们最小的网络号和子网掩码

(一)样例输入

3          表示要获取的IP地址个数
194.85.160.177  IP地址
194.85.160.183
194.85.160.178

(二)样例输出

194.85.160.176
255.255.255.248

二:代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>#define N 1000int IP_Add[N][4],num;  //存放IP地址和个数

利用位移,与,或操作获取子网掩码

int getInterAddr()
{int i, j, n,m,len=0;for (i = 0; i < 4;i++)for (j = 1; j < num;j++)if (IP_Add[j][i] != IP_Add[j - 1][i])    //若是和上一个地址不同,则跳出goto Next;
Next:    //上面两个for获取的是IP相同的数据组,下面获取不同组的相同位数n = m = IP_Add[j - 1][i];for (j = 1; j < num; j++)n &= IP_Add[j][i],m|=IP_Add[j][i];for (int k = 0; k < i; k++)    //开始打印部分网络号printf("%d.", IP_Add[0][k]);//对n,m做右移操作,获取完整网络号while (n != m)    //比较n,m获取相同位数
    {n >>= 1, m >>= 1;len++;    //len记录的是不同位数
    }printf("%d\n", n<<=len);    //记得将n右移回去//获取相同位数长度return i*8+8-len;
}

根据网络号获取的位数来获取子网掩码

void getSubAddr(int len)
{int n;for (int i = 0; i < len / 8; i++)printf("255.");n = 255 - ((int)pow(2.0, (double)(8 - len % 8)) - 1);printf("%d", n);for (int i = len / 8+1; i < 4; i++)printf(".0");printf("\n");
}

主函数

void main()
{FILE* fp = freopen("data5.in", "r", stdin);freopen("data5.out", "w", stdout);int l;    //记录子网掩码长度
    scanf("%d", &num);    //先读取IP个数
    getchar();//再读取所有IPfor (int i = 0; i < num; i++){scanf("%d.%d.%d.%d", &IP_Add[i][0], &IP_Add[i][1], &IP_Add[i][2], &IP_Add[i][3]);getchar();}//开始获取网络地址l = getInterAddr();//获取子网掩码
    getSubAddr(l);freopen("CON", "r", stdin);freopen("CON", "w", stdout);
}

全部代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>#define N 1000int IP_Add[N][4],num;int getInterAddr()
{int i, j, n,m,len=0;for (i = 0; i < 4;i++)for (j = 1; j < num;j++)if (IP_Add[j][i] != IP_Add[j - 1][i])    //若是和上一个地址不同,则跳出goto Next;
Next:    //上面两个for获取的是IP相同的数据组,下面获取不同组的相同位数n = m = IP_Add[j - 1][i];for (j = 1; j < num; j++)n &= IP_Add[j][i],m|=IP_Add[j][i];for (int k = 0; k < i; k++)    //开始打印部分网络号printf("%d.", IP_Add[0][k]);//对n,m做右移操作,获取完整网络号while (n != m)    //比较n,m获取相同位数
    {n >>= 1, m >>= 1;len++;    //len记录的是不同位数
    }printf("%d\n", n<<=len);    //记得将n右移回去//获取相同位数长度return i*8+8-len;
}void getSubAddr(int len)
{int n;for (int i = 0; i < len / 8; i++)printf("255.");n = 255 - ((int)pow(2.0, (double)(8 - len % 8)) - 1);printf("%d", n);for (int i = len / 8+1; i < 4; i++)printf(".0");printf("\n");
}void main()
{FILE* fp = freopen("data5.in", "r", stdin);freopen("data5.out", "w", stdout);int l;    //记录子网掩码长度
    scanf("%d", &num);    //先读取IP个数
    getchar();//再读取所有IPfor (int i = 0; i < num; i++){scanf("%d.%d.%d.%d", &IP_Add[i][0], &IP_Add[i][1], &IP_Add[i][2], &IP_Add[i][3]);getchar();}//开始获取网络地址l = getInterAddr();//获取子网掩码
    getSubAddr(l);freopen("CON", "r", stdin);freopen("CON", "w", stdout);
}

全部代码

转载于:https://www.cnblogs.com/ssyfj/p/11146726.html

算法习题---4-5IP网络(Uva1590)相关推荐

  1. 算法杂货铺——分类算法之贝叶斯网络(Bayesian networks)

    算法杂货铺--分类算法之贝叶斯网络(Bayesian networks) 2010-09-18 22:50 by T2噬菌体, 66011 阅读, 25 评论, 收藏, 编辑 2.1.摘要 在上一篇文 ...

  2. CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)—五个架构设计思维导图

    CV之IE之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成不同尺寸和质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)-五个架构设计思维导图 ...

  3. SSD系列算法原理讲解----(1)SSD系列算法介绍(主干网络、多尺度Feature Map预测)(笔记)

    SSD系列算法原理介绍 SSD算法介绍: Single Shot MultiBox Detector(One-stage方法) - Wei Liu在ECCV 2016提出 - 直接回归目标类别和位置 ...

  4. 基于麻雀算法改进的无线传感器网络Dv-hop定位算法 - 附代码

    基于麻雀算法改进的无线传感器网络Dv-hop定位算法 文章目录 基于麻雀算法改进的无线传感器网络Dv-hop定位算法 1.DV-Hop算法原理 2.麻雀算法改进DV-Hop算法原理 3.算法测试 4. ...

  5. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成带背景的不同尺寸高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成带背景的不同尺寸高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例 目录 基于 ...

  6. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更高质量的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...

  7. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成更大尺寸的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利 ...

  8. CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成原始的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用

    CV之IG之Inception:基于TF框架利用Inception模型+GD算法的某层网络图像生成原始的Deep Dream幻觉梦境图片(特征可视化实现图像可解释性)案例应用 目录 基于TF框架利用I ...

  9. [论文速读] 图像增强系列:2020 TIP 最新去雾算法(摘要、网络结构图及论文链接)

    [论文速读] 图像增强系列:2020 TIP 最新去雾算法(摘要.网络结构图及论文链接) 本博客先介绍 2020 TIP 最新去雾算法的摘要.网络结构图及论文链接,后续将陆续补充较为详细的内容. 目录 ...

  10. 《算法竞赛入门经典》 习题4-5 IP网络(IP Networks,ACM、ICPC NEERC 2005,UVa1590)

    原题及翻译 Alex is administrator of IP networks. 亚历克斯是IP网络的管理员. His clients have a bunch of individual IP ...

最新文章

  1. “一带一路”谋定沿边开放发展-刘虹飞:经信研究形成共识
  2. 廖雪峰javascript教程学习记录
  3. 百度AICA再添57位“首席AI架构师”,人工智能与产业场景结合愈发深入
  4. matlab均线程序化交易,【策略分享】Matlab量化交易策略源码分享
  5. Replacing the ESXi Host Default Certificate with a CA-Signed Certificate
  6. 一文带你了解如何打造持续学习文化
  7. qt c++ 图片预览_Qt多语言国际化
  8. quartz 表达式解析 详解
  9. Redis 基本数据类型和使用
  10. WPF Telerik TreeListView样式设计
  11. 解决12c安装过程中的各种报错
  12. 微信小程序上线,后台接口失效问题
  13. PyTorch中文教程 | (11) 聊天机器人教程
  14. openwrt 锐捷 单线多拨
  15. Leetcode(24)——两两交换链表中的节点
  16. 什么录音软件可以录制电影对白
  17. latex 表格标题分行和居中
  18. 毕业设计 推荐系统设计与实现 协同过滤推荐算法
  19. Proteus 8 中文版安装教程
  20. iOS的三种常见计时器(NStimer、CADisplayLink、dispatch_source_t)的使用

热门文章

  1. Android Studio 将github作为远程maven仓库
  2. TDD(测试驱动开发)学习一:初识TDD
  3. iOS KVO实现方式
  4. 对HDLC 和PPP实验的总结
  5. Google Gears 体验(1):本机数据库
  6. 卡拉OK歌词同步播放
  7. Mac唤醒后无声的一种解决方法
  8. ZooKeeper、Eureka、Consul 、Nacos,微服务注册中心怎么选?
  9. 面试再问HashMap,求你把这篇文章发给他!
  10. 中国顶级程序员有多牛?一个弄哭韩国,一个堪称阿里“扫地僧”