面试-二维数组

应用

快递业务有N个站点,1<N<10000;站点0、站点1可达,记作0-1;如果0-1、1-2,则站点0、站点2可达,记作0-2;s[i][j]=1表示i-j可达,反之s[i][j]=0表示i-j不可达;s[i][j]与s[j][i]取值相同;现用二维数组表示N个站点可达关系,请计算快递员至少从几个站点出发,才能到达所有站点?

实现

python 复制代码
N = int(input("请输入站点个数:"))
s = []

for i in range(0, N): 
    
    row = []
    
    for j in range(0, N):
        
        if i == j:
            row.append(1)
        
        if i < j:
            print(f"{i}-{j}站点的可达性数值")
            element = int(input("请输入0或1:"))
            row.append(element)
        
        if i > j:
            row.append(s[j][i])
    
    s.append(row)

print(s)

# 待出发节点数 = 总节点数 - 最少连线数量
# 例如10个站点,7个站点连通(至少6根线)、2个站点能连通(至少1根)、1个站点单独,10-6-1-0=3
# 遍历二维数组s,查看对角线以上、为1的元素的个数
num = 0

for i in range(0, N): 
    for j in range(0, N): 
        if i < j:
            if s[i][j] == 1:
                num = num + 1

print(f"至少从{N-num}个节点出发")
powershell 复制代码
# 站点:0 1 2 3
# 2与0、1、3连通,0、1、3互不直通

请输入站点个数:4
0-1站点的可达性数值
请输入0或1:0      
0-2站点的可达性数值
请输入0或1:1      
0-3站点的可达性数值
请输入0或1:0
1-2站点的可达性数值
请输入0或1:1
1-3站点的可达性数值
请输入0或1:0
2-3站点的可达性数值
请输入0或1:1
[[1, 0, 1, 0], [0, 1, 1, 0], [1, 1, 1, 1], [0, 0, 1, 1]]
至少从1个节点出发
相关推荐
DogDaoDao1 个月前
leetcode 面试经典 150 题:矩阵置零
数据结构·c++·leetcode·面试·矩阵·二维数组·矩阵置零
TPCloud1 个月前
详解下c语言下的多维数组和指针数组
c语言·二维数组·数组指针·指针数组
武昌库里写JAVA1 个月前
金三银四,Java面试视频资料分享
c语言·开发语言·数据结构·算法·二维数组
huangzhendong11 个月前
重生之我在21世纪学C++—二维数组
c++·二维数组
武昌库里写JAVA2 个月前
SpringBoot
c语言·开发语言·数据结构·算法·二维数组
武昌库里写JAVA2 个月前
一文读懂Redis6的--bigkeys选项源码以及redis-bigkey-online项目介绍
c语言·开发语言·数据结构·算法·二维数组
武昌库里写JAVA3 个月前
Centos7默认的python版本是2.7,现在很多新开发的python均需要3.X以上。下面升级centos的预装python版本到最新。
c语言·开发语言·数据结构·算法·二维数组
凛冬将至__3 个月前
【C语言】二维数组:定义与传参
c语言·二维数组·传参·定义
武昌库里写JAVA4 个月前
【Java】Java面试题笔试
c语言·开发语言·数据结构·算法·二维数组