数据结构与算法
#数据结构与算法题目 # Leetcode
Multiset
这个作者很懒,什么都没留下…
展开
-
棋盘问题(poj 1321)
问题描述:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。输入:输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= ...原创 2020-03-13 09:24:41 · 673 阅读 · 0 评论 -
Ant Counting多重集组合数
Ant Counting题目描述: 有一天,贝茜无聊地坐在蚂蚁洞前看蚂蚁们进进出出地搬运食物.很快贝茜发现有些蚂蚁长得几乎一模一样,于是她认为那些蚂蚁是兄弟,也就是说它们是同一个家族里的成员.她也发现整个蚂蚁群里有时只有一只出来觅食,有时是几只,有时干脆整个蚁群一起出来.这样一来,蚂蚁们出行觅食时的组队方案就有很多种.作为一头有数学头脑的奶牛,贝茜注意到整个蚂蚁群由T(1≤T≤1000)个家族组...原创 2019-08-20 08:46:40 · 309 阅读 · 0 评论 -
Monthly Expense(POJ 3273)
问题描述:Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) ...原创 2020-03-13 13:42:50 · 67 阅读 · 0 评论 -
欧几里得筛
欧式筛法#include<iostream>#include<cstdio>#include<cstring>#define N 10001using namespace std;int prime[N];int cnt;void IsPrime(int n){ int a[n+1]; memset(a,0,sizeof(a)); int...原创 2020-01-19 13:03:25 · 199 阅读 · 0 评论 -
超级楼梯
题目描述:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?输入:输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。样例输入:223样例输出:12拿到这个题目的第一反应就是用递归来解决,提交了一下时间超限了。这个题目其实正解其实用类似斐波那契数列来解决。...原创 2020-03-12 20:56:23 · 48 阅读 · 0 评论 -
NIM博弈
问题:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此时没有任何合法的移动)。要知道,像Nim游戏这种博弈问题,最重要的是寻找必败态。这个必败态的意思就是,这样一种局面摆在面前的话先手必败。其严格定义如下:1、无法进行任何移动的局面是必败态;2、可以移动到必败态的局面是非必败态;3、在必败态...原创 2020-03-12 18:01:46 · 91 阅读 · 0 评论 -
巴什博弈
只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.若(m+1) | n,则先手必败,否则先手必胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m...原创 2020-03-12 15:29:57 · 58 阅读 · 0 评论 -
威佐夫博弈(POJ 1067)
定义先手必输的局势为奇异局势,前几个奇异局势为(0,0),(1,2),(3,5),(4,7),(6,10)…假设(x,y)为第k个奇异局势1.任何操作都会将奇异局势变为非奇异局势2.可以采取适当的方法将非奇异局势变为奇异局势人们通过对上述性质的探索,同时结合Betty定理,给出了威佐夫博弈的重要结论:设两堆石子为(x,y)(其中x<y)那么先手必败,当且仅当(y−x)∗(5√+...原创 2020-03-11 21:59:03 · 93 阅读 · 0 评论 -
Dijkstra算法
迪杰斯特拉(Dijkstra)是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索的思想),直到扩展到终点为止。(第一段是抄的,由于本人是个算法小白。官方的话还是抄的好)有这么一个加权图,Dijkstra算法可以计算任意节点到其他节点的最短路径。算法思路:1.指定一个节点,例如我们要计算‘A’到其他节点的最短路径2.定义两个...原创 2020-03-13 20:15:36 · 83 阅读 · 0 评论 -
Prime算法
MST(Minimum Spanning Tree,最小生成树)问题有两种通用的解法,Prim算法就是其中之一,它是从点的方面考虑构建一颗MST,大致思想是:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V,再从集合U-V中找到另一点b使得点b到V中任意一点的权值最小,此时将b点也加入集合V;以此类推,现在的集合V={a,b},再从集合U-V中找到另一点c使得点c到V中任...原创 2020-03-13 21:46:28 · 241 阅读 · 0 评论 -
蓝桥杯 测试次数(2018 C/C++ B _4)
答案 :19;原创 2020-03-13 15:51:55 · 224 阅读 · 0 评论 -
2的次幂表示
2的次幂表示问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=27+23+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=22+2+20 (2^1用2表示) 3=2+2^0...原创 2020-04-17 14:46:47 · 316 阅读 · 0 评论