当前位置: 首页 > news >正文

新加坡建设网站食品公司网站模板

新加坡建设网站,食品公司网站模板,热门的建设工程人员查询,上传网站流程文章目录 P2089烤鸡(指数)P1088火星人(全排列)P1149火柴棒等式(指数预处理)P2036 PERKET(指数)棋盘问题(全排列)数的划分(组合)【迷宫…

文章目录

  • P2089烤鸡(指数)
  • P1088火星人(全排列)
  • P1149火柴棒等式(指数+预处理)
  • P2036 PERKET(指数)
  • 棋盘问题(全排列)
  • 数的划分(组合)
  • 【迷宫问题】
  • 【最大连通块问题】P1596 [USACO10OCT] Lake Counting S

P2089烤鸡(指数)

在这里插入图片描述
说明:对于100%的数据,n小于等于5000

N = 30
n = int(input())
arr = [0] * N  # 存储当前方案,索引 1 到 10
res = 0
memo = []  # 存储所有方案的列表def dfs(x, sum_val):  # x 表示当前配料,sum_val 表示当前总和global resif sum_val > n:  # 超过 n,剪枝returnif x > 10:  # 填满 10 种配料if sum_val == n:  # 总和恰好为 nres += 1scheme = [arr[i] for i in range(1, 11)]  # 复制当前方案memo.append(scheme)returnfor i in range(1, 4):  # 每种配料选 1 到 3arr[x] = idfs(x + 1, sum_val + i)  # 累加 i 到 sum_valdfs(1, 0)  # 从第 1 种配料开始,总和为 0print(res)  # 输出方案总数
if res > 0:for scheme in memo:  # 输出每种方案print(" ".join(map(str, scheme)))

P1088火星人(全排列)

在这里插入图片描述
在这里插入图片描述

import sys
sys.setrecursionlimit(10**9)
n = int(input())
m = int(input())
mars = [0] + list(map(int, input().split()))
ans = [0 for _ in range(n+1)]
st = [0 for _ in range(n+1)]
cnt = 0
# 通常会用深度优先搜索(DFS)生成所有可能的排列,并通过一个计数器 cnt 来跟踪当前是第几个排列。cnt 的具体作用是:
# 每当 DFS 生成一个完整的排列时,cnt 增加 1。
# 通过 cnt,我们可以知道当前排列在字典序中的位置(第几个)def dfs(x):global cntif x > n:cnt += 1if cnt == m + 1:  # 说明我们已经生成了从火星人排列开始的第 M 个后续排列(包括火星人排列本身后的第 M 个print(*ans[1:])exit()returni = 1while i <= n:if cnt == 0:i = mars[x]if not st[i]:st[i] = 1ans[x] = idfs(x + 1)st[i] = 0ans[x] = 0i += 1dfs(1)

P1149火柴棒等式(指数+预处理)

在这里插入图片描述

N = 1010
n = int(input())
n -= 4
huo_1000 = [0] * N
huo = [6, 2, 5, 5, 4, 5, 6, 3, 7, 6]
nums = huo + huo_1000
arr = [0] * N  # 存放当前状态
count = 0def col(x):if nums[x] > 0:return nums[x]else:sumFire = 0while x:sumFire += nums[int(x % 10)]x /= 10return sumFiredef dfs(x, sum):global countif sum > n:returnif x > 3:if arr[1] + arr[2] == arr[3] and sum == n:count += 1print(*arr[0:4])returnfor i in range(0, 1000):  # 每个位置遍历火柴的数量arr[x] = idfs(x + 1, sum + col(i))arr[x] = 0dfs(1, 0)
print(count)
# 程序从 dfs(1, 0) 开始递归搜索,这意味着它首先尝试确定A的值,然后是B,最后是C。如果从arr[0]开始,则可能意味着不同的设计选择,但基于上述逻辑,这里的实现直接跳过了arr[0],从arr[1]开始代表A。

P2036 PERKET(指数)

在这里插入图片描述

# 最大配料数量
N = 50
# 读取配料数量
n = int(input())
# 用于标记每种配料的选择状态,0 未考虑,1 选择,2 不选择
st = [0] * (N + 1)
# arr是记录当前状态,如果没有输出的话不需要
# 初始化最小差值为一个较大的值
res = float('inf')
# 存储每种配料的酸度
acid = [0]
# 存储每种配料的苦度
bitter = [0]# 读取每种配料的酸度和苦度
for i in range(n):line = list(map(int, input().split()))acid.append(line[0])bitter.append(line[1])def dfs(x):global res# 当考虑完所有配料时if x > n:# 标记是否选择了至少一种配料has_ingredient = Falseacid_sum = 1bitter_sum = 0# 遍历所有配料for i in range(1, n + 1):if st[i] == 1:has_ingredient = Trueacid_sum *= acid[i]bitter_sum += bitter[i]# 只有选择了至少一种配料时才更新结果if has_ingredient:res = min(res, abs(acid_sum - bitter_sum))return# 选择当前配料st[x] = 1dfs(x + 1)# 不选择当前配料st[x] = 2dfs(x + 1)# 恢复状态st[x] = 0# 从索引 1 开始进行深度优先搜索
dfs(1)
print(res)

棋盘问题(全排列)

在这里插入图片描述

def dfs(x, count, n, k, g, st):global resif count == k:  # 已经放置了 k 个棋子res += 1returnif x >= n:  # 超出棋盘行数(从 0 到 n-1)return# 尝试在当前行 x 放置棋子for i in range(n):if not st[i] and g[x][i] == '#':  # 列未使用且当前位置是棋盘区域st[i] = Truedfs(x + 1, count + 1, n, k, g, st)st[i] = False# 也可以选择当前行不放棋子,直接跳到下一行dfs(x + 1, count, n, k, g, st)# 主程序
while True:line1 = list(map(int, input().split()))n = line1[0]k = line1[1]if n == -1 and k == -1:break# 初始化g = []  # 棋盘res = 0  # 结果st = [False] * n  # 标记每列是否使用# 读取棋盘for _ in range(n):g.append(list(input()))dfs(0, 0, n, k, g, st)print(res)

数的划分(组合)

在这里插入图片描述

line1 = list(map(int, input().split()))
n = line1[0]
k = line1[1]
arr = [0] * n
res = 0def dfs(x, start, num_sum):global resif num_sum > n:returnif x == k:if num_sum == n:res += 1returnfor i in range(start, n):  # 题目要求每份不能为空,即最小值为1,而且为了保证是递增序列要从start开始arr[i] = idfs(x + 1, i, num_sum + i)arr[i] = idfs(0, 1, 0)
print(res)

【迷宫问题】

习题

N = 20
line1 = list(map(int, input().split()))
w = line1[0]
h = line1[1]
g = []
for i in range(h):line = list(input())g.append(line)
#
# for row in g:
#     print(row)
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
st = [[False for _ in range(N)] for _ in range(N)]
res = 0def dfs(x, y):global resfor i in range(4):a = x + dx[i]b = y + dy[i]if a < 0 or a >= h or b < 0 or b >= w: continueif g[a][b] == '#': continueif st[a][b]: continuest[a][b] = Trueres += 1dfs(a, b)for i in range(h):for j in range(w):if g[i][j] == '@':dfs(i, j)# res+=1
print(res)

【最大连通块问题】P1596 [USACO10OCT] Lake Counting S

在这里插入图片描述

line1 = list(map(int, input().split()))
n = line1[0]
m = line1[1]
st = [[False for _ in range(m)] for _ in range(n)]  # 存放状态,被选择过or没被选择过
g = []
for row in range(n):line = list(input())g.append(line)res = 0# for row in g:
#     print(row)dx = [1, 1, 1, 0, 0, -1, -1, -1]
dy = [-1, 0, 1, 1, -1, 1, 0, -1]  # 最好配对记住def dfs(x, y):for i in range(8):a = x + dx[i]b = y + dy[i]if a < 0 or b < 0 or a >= n or b >= m: continueif g[a][b] == '.': continueif st[a][b]: continuest[a][b] = Truedfs(a, b)for i in range(n):for j in range(m):if g[i][j] == 'W' and st[i][j] == False:dfs(i, j)res += 1
print(res)
http://www.dtcms.com/a/608959.html

相关文章:

  • 网站管理 地址:学生做网站的工作室
  • 优化网站制作方法大全微信怎么关闭小程序消息
  • 国内优秀网站设计欣赏百度官方网站首页
  • 深圳网站设计公司 学校舆情分析报告
  • 教育行业网站建设网站建设 维护费用
  • 金坛做网站的广东自助建站网站
  • google英文网站深圳制作网站建设的企业
  • vue做的手机网站辽宁建设工程信息网业绩录入
  • 如何做好一个企业网站邢台论坛
  • 网站开发的图标鄂应用官方app下载
  • 自己如何做家政网站成立一间网站开发公司
  • 深圳发布稳增长措施上海优化网站方法
  • 建设网站的企业费用360网页游戏大厅
  • 设计网站推荐ps阿里云网站建设9元
  • 教育学校网站源码 php十堰秦楚网 十堰新闻门户网站
  • 教学网站开发代码网站登录人太多进不去怎么办
  • 深圳市手机网站建设品牌免费域名注册解析
  • 网站正在建设中html深圳专业制作网站的公司哪家好
  • 班级网站设计模板怀柔做网站的公司
  • 怎么看一个网站是什么时候做的新手建立企业网站流程
  • 长沙响应式网站建设石狮建设银行网站
  • 用iis建立网站网页源代码查看器
  • 产品故事软文案例深圳抖音seo
  • 新网站建设方案设计网站怎样做色卡
  • 免费个人自助建站广州网络推广专员
  • 网站试运营登录我的企业邮箱
  • 网站建设设计报告wordpress推荐人插件
  • 在建项目人员查询网站wordpress付费下载
  • 网站建设岗位有哪些做毕业设计资料网站
  • 公司网站建设报告最大的推广平台