关于搓牌

搓牌
顾名思义就是搓牌,我们要搓牌,就要知道一些常识,下面来介绍一下

定义:

现在我们有\(a\)数组存储了\(1-n\)这几个数,要求任意一项都满足\(a[i] != i\),求有多少种排列方式

公式:

\(f(n)=(n-1)[f(n-1)+f(n-2)]\)

简单证明:

设\(a\)装入\(B\)
则有两种情况
\(1.\)\(b\)装入\(A\)则剩下\(n-2\)个物品就是\(f(n-2)\)
\(2.\)\(b\)不装入\(A\)则就是\(f(n-1)\)
除讨论\(a\)外我们还可讨论\(b、c、d......\)共有\(n-1\)种情况
所以\(f(n)=(n-1)[f(n-1)+f(n-2)]\)

原文地址:https://www.cnblogs.com/yanxiujie/p/11730081.html

时间: 2024-11-13 09:37:25

关于搓牌的相关文章

[Shader]扑克牌搓牌效果

<1>效果图(很简单的版本) <2> Shader "Custom/mymat" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _Glossiness ("Smoothness", Range(0,1)) = 0.5 _Metallic (&q

胡牌高手

玩过麻将 龙虎榜的人应该很熟悉这个画面,一般三连庄之后,会有个小游戏.这个游戏叫胡牌高手,就是给你十三张牌,都是清一色的万子,筒子或者条子,找出胡的那几张牌. 我的电玩生涯中,有几个游戏一直陪伴着我,街霸,双截龙,拳皇,快打三和龙虎榜,也叫搓牌高手.其他的游戏起起落落,一段时间过去,都从各大游戏室里面消失,当然搓牌高手最后也不能幸免,但是它的时间跨度是其他游戏所不能比的.最早玩的游戏应该数名将,那个瘦的像芦材棒的选手是大家的最爱,那一招死的玩法是永远的经典,也是早期街机的著名bug.当时,格斗技

缘分:缘分

ylbtech-缘分:缘分 缘分,亦作缘份:它是一种人与人之间无形的连结:是某种必然存在相遇的机会和可能,包括所有情感.爱情中,二人相爱的缘分是由很多巧合.很多阴差阳错.很多突然.一些偶然.一些必然组成的. 后世缘喻为命运纠缠的丝线,它是出自一个宗教概念,儒家与道家并不突出缘分这个先导性,但是也会有机缘.机遇这一说法. 1.返回顶部 1. 中文名:缘分 外文名:pratyaya 注    音:yuán    fèn 释    义:彼此有交集是缘分 词    性:名词 近    义:人缘,姻缘 目

[转]完美洗牌(Perfect Shuffle)问题

[转]原博文地址:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.09.md 完美洗牌算法 题目详情 有个长度为2n的数组{a1,a2,a3,...,an,b1,b2,b3,...,bn},希望排序后{a1,b1,a2,b2,....,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法. 题目来源:此题是去年2013年UC的校招笔试题,看似简单,按照题目所要

癞子麻将胡牌算法实现

最先实现的就是算法的实现. 需求:碰杠胡  ,不能吃 ,不能听 ,仅仅能自摸胡,当中癞子能够做随意牌可是不能碰和杠. 写的时候还不会玩麻将,还是老板教的.^_^ 最麻烦的是胡牌算法.之前搜到的都是不包括癞子正常的胡牌,用的是%3余2,当中余数2就是余的将的意思. 可是有癞子就不能这么用了.仅仅好自己写一个了. 一个有136张牌,万,饼,条,东西南北中发白34种牌. 有四个癞子是直接就胡牌的,最坏的情况是有3个癞子,可是假设遍历一遍不用逻辑推断就有34X34X34接近4万次. 想一下假设能胡牌,最

博弈问题-Alice与Bob拿牌游戏

Description Bob and Alice play a game, and Bob will play first. Here is the rule of the game: 1) There are N stones at first; 2) Bob and Alice take turns to remove stones. Each time, they can remove p^k stones. p is prime number, such as 2, 3, 5, ...

[JLOI2013]卡牌游戏

题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个人将会作为下一轮的庄家.那么经过N-1轮后最后只会剩下一个人,即为本次游戏的胜者.现在你预先知道了总共有M张卡片,也知道每张卡片上的数字.现在你需要确定每个

4月6日--关于算法数的练习题--扑克洗牌

扑克 1.定义一个数组,存放1-52(分别表示52张扑克,不含大.小王)其中1表示黑桃A,2表示黑桃2...,13表示 黑桃K,14表示红桃A......) 2.随机排列该数组 3.再将牌平均分给4个玩家(分成4个数组,按照发牌规则) 4.排序输出每个玩家的扑克(先按照花色:黑桃.红桃.梅花,方块;再按照大小) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q

从一副牌中随机抽一张牌

public class Demo { public static void main(String[] args) { //定于花色,1代表红桃,2代表黑桃,3代表梅花,4代表方片 int a = (int) (Math.random()*4+1); //定义牌的张数 int b = (int) (Math.random()*13+5); switch(b){ case 1: if(a==1){ System.out.println("你的牌是红桃A"); }else if(a==2