之前一直用c++写程序  所以考虑程序一般都比较容易往数据结构的方向想 而自己设计数据结构往往要费很大事  昨天看了一下python  发现脚本语言 真是厉害    用来进行模拟运算确实不错  可以先想个解决问题的思路 用python 先测试一下  如果可行 如果为了运行效率 使用c++改写  确实是一个不错的选择

昨天在看操作系统的时候看到这么一个题目  

这个题目是操纵系统中典型的为多个进程分配资源 最后达到安全状态的题目,可以理解为找一条安全路径

如果使用c++来写 那就用深度优先搜索算法  然后就要慢慢思考解决办法了 , 为了练习刚刚学习的python 我使用python的 numpy来解决这个问题

因为还没有学怎么写函数  所以写成四个循环了 不过算法复杂度应该差不多, 准备再学一段时间后 优化一下

import numpy
a=numpy.array(([1,1,2,4],
[0,1,2,2],
[1,1,1,0],
[1,1,1,1]))
b=numpy.array(([1,2,3,6],
[1,1,2,2],
[1,2,1,1],
[1,1,2,3]))
c=numpy.array([0,1,0,1]) d=b-a for i in range(0,4):
j = 0
for j in range(0,4):
if d[i][j]>c[j]:
break
# print 'e'
# if j==3 and d[i][j]<=c[j]:
else:
e=numpy.array([0,0,0,0])
f=c
e[i]=1
f=f+d[i]
d[i]=numpy.array((0,0,0,0)) for k in range(0,4):
if e[k]==1:
continue
n = 0
for n in range(0,4):
if d[k][n]>f[j]:
break;
# if n==3 and d[k][n]<=f[j]:
else: e[k]=1
f=f+d[k]
d[k]=numpy.array((0,0,0,0))
for m in range(0,4):
if e[m]==1:continue
p = 0
for p in range(0,4):
if d[m][p]>f[p]:break
# print p
# print m
# if p==3 and d[m][p]<=f[p]:
else: e[m]=1
f=f+d[m]
d[m]=numpy.array((0,0,0,0))
for q in range(0,4):
if e[q]==1:continue
r = 0
for r in range(0,4):
if d[q][r]>f[r]:break
# if r==3 and d[q][r]<=f[r]:
else:
print i+1
print k+1
print m+1
print q+1
# print 'heihei'
exit() d[m]=b[m]-a[m]
e[m]=0
d[k]=b[k]-a[k]
e[k]=0
d[i]=b[i]-a[i]
e[i]=0

python学习应用笔记(一)的更多相关文章

  1. Python学习基础笔记(全)

    换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...

  2. [python学习手册-笔记]001.python前言

    001.python前言 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明 ...

  3. [python学习手册-笔记]002.python核心数据类型

    python核心数据类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明 ...

  4. [python学习手册-笔记]003.数值类型

    003.数值类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...

  5. [python学习手册-笔记]004.动态类型

    004.动态类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...

  6. python学习第一次笔记

    python第一次学习记录 python是什么编程语言 变成语言主要从以下几个角度进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言. 1.1编译型与解释性 编译型:一次性将 ...

  7. Python 学习开发笔记之IO操作

    文件或者目录的路径操作 获取当前工作目录 import os import sys cwd = os.getcwd() 路径的拼接 os.path.join(path,"dir") ...

  8. python学习总结笔记(一)

    1.raw_input("请输入:")提示录入信息,读取录入的字符串返回你录入的字符串2.os.environ 获取所有系统的环境变量,返回一个字典.3.str与repr区别str ...

  9. python 学习常见问题笔记

    1.for...if...构建List segs = [v for v in segs if not str(v).isdigit()]#去数字 https://www.cnblogs.com/eni ...

随机推荐

  1. HDU 4121 Xiangqi 我老了?

    Xiangqi Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  2. ubuntu设置vim语法高亮显示和自动缩进

    转自:http://nichael1983.blog.163.com/blog/static/114969433201002711850604/ 今天自己学习使用vim,当我在vim中输入程序时,默认 ...

  3. python-appium练习编写脚本时遇到问题

    遇到问题: 1.安卓4.2及以下系统无法识别resource-id属性 只能用text属性识别 2.输入中文无法识别 脚本最顶部增加#coding=utf-8 3.对象无法识别resource-id属 ...

  4. 两个一样的tomcat不能同时启动解决方法

    环境:两个Tomcat7.0.20,使用一个JVM,JDK7,Win7 64位系统. 1.使用压缩版的tomcat不能使用安装版的. 2.第一个tomcat的配置不变. 3.增加环境变量CATALIN ...

  5. android + javascript 相互通信实例分析

    1.  AndroidManifest.xml中必须使用许可 "android.permission.INTERNET", 否则会出Web page not available错误 ...

  6. JavaBean和内省

    JavaBean和内省 JavaBean是一个遵循特定的写法的java类     1. 必须有一个无参的构造方法     2.属性私有化     3.私有你给的属性必须通过public类型的方法暴露给 ...

  7. ionic ngcordova barcodescanner

    二維碼掃描  最近有一個項目用到了 二維碼的掃描  總結一下 記錄一下 1.  ionic platform add ios 2. 添加插件 cordova plugin add https://gi ...

  8. @media screen解决移动web开发的多分辨率问题

    当今移动设备的发展已经越来越迅速,移动web开发的需求也越来越多多.许多大平台.大门户都纷纷推出了自己的移动web版网站. 随着移动设备飞速的发展,移动产品的屏幕规格越来越多.从几年前的320×240 ...

  9. HTTP长连接200万尝试及调优

    对于一个server,我们一般考虑他所能支撑的qps,但有那么一种应用, 我们需要关注的是它能支撑的连接数个数,而并非qps,当然qps也是我们需要考虑的性能点之一.这种应用常见于消息推送系统,也称为 ...

  10. openssl mac中使用终端生成RSA私钥和公钥文件

    RSA密钥生成命令生成RSA私钥openssl>genrsa -out rsa_private_key.pem 1024生成RSA公钥openssl>rsa -in rsa_private ...