求助,求帮忙用python编一个程序,实在是不会了。

qq_33527227 2015-12-27 01:09:27
银行间会相互借贷。在经济艰难时期,如果一家银行宣告破产,它可能无法偿还贷款。一家银行的资产总额是它现有的余额加上它给其他银行的贷款。下图显示了5家银行之间的借贷关系和自身资产余额。各银行的现有余额分别是25、125、175、75和181百万美元。节点1到节点2的有向边表明银行1将40百万美元借给银行2。

(a)银行间的借贷关系
如果一家银行的资产总额低于一定的界限,这家银行就身处险境了。此时该银行将无法给其他银行偿还它的贷款,因此贷方银行无法将这些贷款计入它的资产总额。因此,该贷方银行的资产总额同样可能低于这个界限,它也就可能变得危险。编写一个程序找出所有不安全的银行。程序应读入如下所示的输入值。它首先读入两个整数n和limit,其中n表明银行的数量,limit是维持银行安全的最低资产总额。接着读入n行信息,它们以0到n-1标识这n家银行。行中的第一个数是银行的余额,第二个数指明从银行贷款的银行数量,其余数字都是由两个数组成的数对。每对数描述一个借方。每对数的第一个数是借方银行的标识,第二个数是所借的金额。例如,上图中五家银行的输入值如下所示(注意界限是201)。
5 201
25 2 1 100.5 4 320.5
125 2 2 40 3 85
175 2 0 125 3 75
75 1 0 125
181 1 2 125
银行3 的资产总额是(75+125),低于201,因此银行3是不安全的。在银行3不再安全之后,银行1的资产总额下降到低于界限(125+40),因此银行1也变成不安全的。程序的输出应该是:
Unsafe banks are 3 1

(提示:使用二维列表borrowers来表示贷款,borrowers[i][j]表示银行i贷款给银行j的总额。一旦银行j不再安全,borrowers[i][j]应当置为0。)
...全文
340 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
惠的降音符 2018-12-27
  • 打赏
  • 举报
回复
引用 2 楼 k826416971的回复:
N = 1000
list = [([0.0] * N) for i in range(N)]
a=[0]*N
vis=[0]*N
n, m = raw_input().split(' ')
n = int (n)
m = float (m)
for i in range (n):
    b = raw_input().split(' ')
    a[i] = float(b[0])
    p = int (b[1])
    for j in range (p):
        list[i][int(b[2*j+2])]=float(b[2*j+3])
now=[0]*N
print 'Unsafe banks are',
flag=1
while flag:
    flag = 0
    p+=1
    for i in range(n):
        now[i]=a[i]
        for j in range(n):
            now[i]+=list[i][j]
        if now[i] < m and vis[i]==0:
            print i,
            vis[i]=1
            flag=1
            for k in range(n):
                list[k][i]=0
5个银行,能不能有一个大概的范例呢
qq_33527227 2015-12-27
  • 打赏
  • 举报
回复
有5个银行啊。。就是图中的意思
k826416971 2015-12-27
  • 打赏
  • 举报
回复
N = 1000
list = [([0.0] * N) for i in range(N)]
a=[0]*N
vis=[0]*N
n, m = raw_input().split(' ')
n = int (n)
m = float (m)
for i in range (n):
    b = raw_input().split(' ')
    a[i] = float(b[0])
    p = int (b[1])
    for j in range (p):
        list[i][int(b[2*j+2])]=float(b[2*j+3])
now=[0]*N
print 'Unsafe banks are',
flag=1
while flag:
    flag = 0
    p+=1
    for i in range(n):
        now[i]=a[i]
        for j in range(n):
            now[i]+=list[i][j]
        if now[i] < m and vis[i]==0:
            print i,
            vis[i]=1
            flag=1
            for k in range(n):
                list[k][i]=0
k826416971 2015-12-27
  • 打赏
  • 举报
回复
银行有几个?

37,737

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧