问题:

给定17中卡牌,每种卡牌的数值为1-17的平方,给定一个攻击值,卡牌的数值代表卡牌的攻击值,达到这样的攻击值能有多少种组合方式

思路:

题目中的卡牌是可以重复使用的,这个问题是一个典型的递归算法的问题,我在写非递归的实现但是还没有完全写对,感觉是不是思路不对了,如果有已经实现的还望不吝赐教,下面给出来递归方法的简单的实现:

#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能:python实现卡牌组合
'''def deep(num_list,pos,score,m):'''递归'''if score==m:return 1elif m-score<num_list[pos]:return 0else:count=0for i in range(0,(m-score)/num_list[pos]+1):count+=deep(num_list, pos+1, score+i*num_list[pos],m)print '-----------------i={0}, count={1}-----------------------------'.format(i,count)print 'deep({0},{1},{2},{3})'.format(num_list, pos+1, score+i*num_list[pos],m)return count def puke(m):'''组合卡牌'''num_list=[]for i in range(1,18):num_list.append(i*i)return deep(num_list,0,0,m)if __name__ == '__main__':#m=int(raw_input())#puke(m)for one in [11,20,100,177,200]:print '达到攻击力{0},卡牌组合方式为:{1}'.format(one, puke(one))

结果如下:

-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],3,0,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],3,9,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,0,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,4,11)
-----------------i=2, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,8,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,0,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],3,1,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],3,10,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,1,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,5,11)
-----------------i=2, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,9,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,1,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],3,2,11)
-----------------i=1, count=1-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],3,11,11)
-----------------i=0, count=1-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,2,11)
-----------------i=1, count=1-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,6,11)
-----------------i=2, count=1-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,10,11)
-----------------i=2, count=1-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,2,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,3,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,7,11)
-----------------i=2, count=1-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,11,11)
-----------------i=3, count=2-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,3,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,4,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,8,11)
-----------------i=4, count=2-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,4,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,5,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,9,11)
-----------------i=5, count=2-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,5,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,6,11)
-----------------i=1, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,10,11)
-----------------i=6, count=2-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,6,11)
-----------------i=0, count=0-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,7,11)
-----------------i=1, count=1-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],2,11,11)
-----------------i=7, count=3-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,7,11)
-----------------i=8, count=3-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,8,11)
-----------------i=9, count=3-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,9,11)
-----------------i=10, count=3-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,10,11)
-----------------i=11, count=4-----------------------------
deep([1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289],1,11,11)
达到攻击力11,卡牌组合方式为:4

由于结果巨大,用8GB的内存跑居然死机了几分钟,结果也没办法全部粘贴仅仅粘贴第一个

下面是去除递归过程打印的结果:

达到攻击力11,卡牌组合方式为:4
达到攻击力20,卡牌组合方式为:12
达到攻击力100,卡牌组合方式为:1116
达到攻击力177,卡牌组合方式为:14607
达到攻击力200,卡牌组合方式为:27482
[Finished in 1.7s]

递归问题学习二之卡牌组合问题相关推荐

  1. 我用python玩炉石传说(3)-----炉石卡牌套牌自动构建算法

    本文共三个部分: 我用python玩炉石传说(1)-----炉石卡牌相关度分析的手动打分器 我用python玩炉石传说(2)-----炉石卡牌套牌爬取器及自动分析卡牌相关度 我用python玩炉石传说 ...

  2. 卡牌游戏战斗系统的设计和实现二

    卡牌游戏战斗系统的设计和实现二 http://www.lxway.com/4418844614.htm 在一篇文章中,我更多的是从游戏理论的角度,讨论了战斗的系统的设计.这篇文章中,我将从程序的角度, ...

  3. 冒险、卡牌、养成类游戏的设计要点

    这几种游戏设计好玩的关键点是: 一.收集 游戏中设计1个主要收集项目,如卡牌本身就是一个很好的收集项目;1-2个次要收集项目,如道具.装备.技能等.主要的收集项目在于游戏的UI等引导用户去收集,并且存 ...

  4. 卡牌链游“诸神之战”攻略

    Gods Unchained 是一款根据以太坊区块链上TCG游戏,它吸取了从<炉石>(Hearthstone).<MTG>(MTG)和<费利亚>(Fearia)等游 ...

  5. 上线4年从畅销Top 200到Top 20,这款刀塔传奇like卡牌正在美国市场逆流而上

    这个品类也许正在迎来新的机会. 欧美玩家对卡牌玩法的热情不高,这是几年前业内早就经历过的文化.市场差异. 当然,我们这里讨论的卡牌手游不是TCG/CCG这类有线下桌游基础的游戏.而是推图过关养成类型的 ...

  6. 【BZOJ4205】卡牌配对

    Description 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且 ...

  7. 算法题 - 卡牌游戏问题 - Python

    问题描述: 卡牌游戏问题   小a和小b玩一个游戏,有 n张卡牌,每张上面有两个正整数 x, y.取一张牌时,个人积分增加 x,团队积分增加 y.求小a,小b各取若干张牌,使得他们的 个人积分相等,且 ...

  8. 基于QT开发的开源局域网联机UNO卡牌游戏报告(附github仓库地址)

    源代码: https://github.com/yunwei37/UNO-game-oop 目录 1. 需求分析 1.1. UNO卡牌游戏的基本功能 1.2. UNO卡牌游戏的规则 2. 总体设计 3 ...

  9. 在WebGL场景中管理多个卡牌对象的实验

    这篇文章讨论如何在基于Babylon.js的WebGL场景中,实现多个简单卡牌类对象的显示.选择.分组.排序,同时建立一套实用的3D场景代码框架.由于作者美工能力有限,所以示例场景视觉效果可能欠佳,本 ...

  10. 计算机卡牌培养游戏,浅谈冒险游戏、卡牌游戏、养成游戏的几个设计要点

    badland-1.jpg (71.19 KB, 下载次数: 16) 2016-1-26 11:56 上传 这几种游戏设计好玩的关键点是: 1.收集:游戏中设计1个主要收集项目,如卡牌本身就是一个很好 ...

最新文章

  1. Go学习之-用vscode写go代码遇到的问题
  2. asp.net UrlRewrite 技术的实现
  3. Java连接数据库(4)
  4. (多线程)leetcode1195. 交替打印字符串 最简单解法一个变量搞定
  5. LeetCode 310. 最小高度树(图 聪明的BFS,从外向内包围)
  6. MongoDB学习之在Windows下安装MongoDB
  7. Python综合练习:学生信息管理(文件版)
  8. 触动精灵mysql用法_[触动精灵]触动精灵官方手册流水账2
  9. Js执行机制——同步和异步
  10. stm32变量放在flash_STM32 使用 Flash 存储数据时的一种管理办法
  11. 嵌入式单片机知识点汇总(持续更)
  12. [树剖]月下“毛景树”
  13. 计算机桌面出现临时文件,如何删除电脑中的临时文件 电脑屏幕一键放大方法分享...
  14. 机器学习----矩估计方法
  15. 技巧:彻底删除电脑弹窗广告,还你一个干净的桌面!
  16. win10如何修改mac地址(亲测通过)
  17. 威胁快报|首爆,新披露Jenkins RCE漏洞成ImposterMiner挖矿木马新“跳板”
  18. 关于hive异常:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStor
  19. “厚德载物”是哪几德,做事先学做人
  20. 大学阶段总结——大四

热门文章

  1. git diff old mode 100755 new mode 100644
  2. 别被数据分析师骗了!用数据说谎的三种办法
  3. ASP.NET 缓存(10)
  4. BZOJ4480[JSOI2013]快乐的jyy
  5. Codeforces 1009E Intercity Travelling 【期望】【概率】
  6. xilinx FIFO的使用及各信号的讨论
  7. 我们应该如何去了解JavaScript引擎的工作原理
  8. ubuntu 中安装 Redis
  9. thinkphp路径引用问题
  10. OpenJudge计算概论-字符串最大跨距