欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python遞歸法解決棋盤分割問題

 更新時(shí)間:2019年07月17日 16:20:35   作者:LZH_12345  
這篇文章主要為大家詳細(xì)介紹了python遞歸法解決棋盤分割問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

題目描述:將一個(gè)8*8的棋盤進(jìn)行分割,將原棋盤分割下一個(gè)矩陣,同時(shí)確保剩下的棋盤也是矩陣;
再將剩下的棋盤繼續(xù)進(jìn)行如上分割,這樣割(n-1)次,最后原棋盤被分割成n塊矩形棋盤;
注意:每次分割只能沿著棋盤格子的邊進(jìn)行分割

原棋盤每個(gè)格子都有一個(gè)分值,一個(gè)矩形棋盤的總分,為所含各格分值之和;

其中,Xi為第i塊矩形棋盤的總分

對給出的棋盤和n,使得矩形棋盤總分的均方差最小,并輸出

分析思路:

程序代碼:

# -*- coding: utf-8 -*-
"""
Created on Mon Mar 12 09:55:35 2018
@author: lizihua
將一個(gè)8*8的棋盤進(jìn)行分割,將原棋盤分割下一個(gè)矩陣,同時(shí)確保剩下的棋盤也是矩陣;
再將剩下的棋盤繼續(xù)進(jìn)行如上分割,這樣割(n-1)次,最后原棋盤被分割成n塊矩形棋盤;
注意:每次分割只能沿著棋盤格子的邊進(jìn)行分割
原棋盤每個(gè)格子都有一個(gè)分值,一個(gè)矩形棋盤的總分,為所含各格分值之和;
其中,Xi為第i塊矩形棋盤的總分
對給出的棋盤和n,使得矩形棋盤總分的均方差最小,并輸出
"""
 
import numpy as np
import math
 
n=int(input("請輸入分割次數(shù):"))
#每個(gè)格子的分值
s=np.zeros((8,8))
for i in range(8):
  s[i]=input("請輸入第"+str(i)+"行各格的分值:").split(' ')
  #將line中的元素轉(zhuǎn)換為整型
  s[i] = list(map(int, s[i]))
 
zero1=np.zeros(8)
zero2=np.zeros(9)
#向s中的最上面加入一行0
s=np.insert(s,0,values=zero1,axis=0)
#向s中的第一列加入一列0
s=np.insert(s,0,values=zero2,axis=1)
res=np.ones((15,8,8,8,8))*(-1) #fun的記錄表
sums=np.zeros((9,9))       #(1,1)到(i,j)的矩形分值之和
res=np.ones((15,9,9,9,9))*(-1) #fun的記錄表
sums=np.zeros((9,9))       #(1,1)到(i,j)的矩形分值之和
for i in range(1,9):
  #rowsum是列之和,所以當(dāng)i變化時(shí),rowsum要清零
  rowsum=0
  for j in range(1,9):
    
    rowsum+=s[i][j]
    sums[i][j]+=sums[i-1][j]+rowsum
 
print(sums)
 
#(x1,y1)到(x2,y2)的矩形分值之和
def calsum(x1,y1,x2,y2):
  return sums[x2][y2]-sums[x2][y1-1]-sums[x1-1][y2]+sums[x1-1][y1-1]
 
#定義遞歸函數(shù)fun()
def fun(n,x1,y1,x2,y2):
  #注意:MIN是局部變量,一定在函數(shù)里賦值,否則結(jié)果會(huì)有問題
  MIN=10000000
  if res[n][x1][y1][x2][y2] != -1:
    return res[n][x1][y1][x2][y2]
  if n==1:
    t=calsum(x1,y1,x2,y2)  #分割后的矩形棋盤(不再分割的那塊)的總分
    res[n][x1][y1][x2][y2]=t*t   #Xi*Xi
    return t*t
  for i in range(x1,x2):
    a=calsum(x1,y1,i,y2)
    c=calsum(i+1,y1,x2,y2)
    t=min(fun(n-1,x1,y1,i,y2)+c*c,fun(n-1,i+1,y1,x2,y2)+a*a)
    if t<MIN:
      MIN=t
    
  for j in range(y1,y2):
    a=calsum(x1,y1,x2,j)
    c=calsum(x1,j+1,x2,y2)
    t=min(fun(n-1,x1,y1,x2,j)+c*c,fun(n-1,x1,j+1,x2,y2)+a*a)
    if t<MIN:
      MIN=t
  res[n][x1][y1][x2][y2]=MIN
  return MIN
 
 
result=n*fun(n,1,1,8,8)-sums[8][8]*sums[8][8]
print(math.sqrt(result/(n*n)))

結(jié)果顯示:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)排序方法常見的四種

    Python實(shí)現(xiàn)排序方法常見的四種

    本文給大家分享python四種常見排序方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-07-07
  • Python爬蟲獲取圖片并下載保存至本地的實(shí)例

    Python爬蟲獲取圖片并下載保存至本地的實(shí)例

    今天小編就為大家分享一篇Python爬蟲獲取圖片并下載保存至本地的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python爬蟲爬取屬于自己的地鐵線路圖

    Python爬蟲爬取屬于自己的地鐵線路圖

    這篇文章主要介紹了Python爬蟲爬取屬于自己的地鐵線路圖,下面文章主要事根據(jù)自己需要對地鐵路線進(jìn)行爬取的實(shí)現(xiàn)過程,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12
  • mac下pip、conda、homebrew修改為清華鏡像源的方法

    mac下pip、conda、homebrew修改為清華鏡像源的方法

    本文主要介紹了mac下pip、conda、homebrew修改為清華鏡像源的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • tensorflow 實(shí)現(xiàn)自定義layer并添加到計(jì)算圖中

    tensorflow 實(shí)現(xiàn)自定義layer并添加到計(jì)算圖中

    今天小編就為大家分享一篇tensorflow 實(shí)現(xiàn)自定義layer并添加到計(jì)算圖中,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python探索之Metaclass初步了解

    Python探索之Metaclass初步了解

    本文先簡單介紹了Python中的類,然后是主要內(nèi)容,涉及Metaclass的相關(guān)內(nèi)容,還是不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • anaconda jupyter不能導(dǎo)入安裝的lightgbm解決方案

    anaconda jupyter不能導(dǎo)入安裝的lightgbm解決方案

    這篇文章主要介紹了anaconda jupyter不能導(dǎo)入安裝的lightgbm解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 基于Python實(shí)現(xiàn)身份證信息識(shí)別功能

    基于Python實(shí)現(xiàn)身份證信息識(shí)別功能

    身份證是用于證明個(gè)人身份和身份信息的官方證件,在現(xiàn)代社會(huì)中,身份證被廣泛應(yīng)用于各種場景,如就業(yè)、教育、醫(yī)療、金融等,它包含了個(gè)人的基本信息,本文給大家介紹了如何基于Python實(shí)現(xiàn)身份證信息識(shí)別功能,感興趣的朋友可以參考下
    2024-01-01
  • python輸入中文的實(shí)例方法

    python輸入中文的實(shí)例方法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python輸入中文的實(shí)例方法,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-09-09
  • Python pymongo模塊用法示例

    Python pymongo模塊用法示例

    這篇文章主要介紹了Python pymongo模塊用法,結(jié)合實(shí)例形式分析了Python中pymongo模塊的安裝與簡單使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論