首页 > 试题广场 >

牛牛扔牌

[编程题]牛牛扔牌
  • 热度指数:1009 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成。点数为‘1’-‘9’的正整数,花色为'C','D','H','S''其中的一个,分别表示梅花、方块、红桃、黑桃。现在想按一定的顺序把这n张牌扔掉。扔牌顺序的规则如下1.:
1.如果现在还剩素数张牌,则将牌顶的牌扔掉
2.如果现在还剩非素数张牌,则将牌底的牌扔掉
求扔牌顺序是什么,请返回扔牌顺序的字符串

示例1

输入

"3C8D6H3D"

输出

"3D3C8D6H"

说明

开始n=4,为非素数,扔掉牌底的牌3D
n=3,为素数,扔掉牌顶的牌3C
n=2,为素数,扔掉牌顶的牌8D
n=1,为非素数,扔掉牌底的牌6H
示例2

输入

"8S8S8S8S8S8S8S"

输出

"8S8S8S8S8S8S8S"

说明

因为全是8S,所以扔牌顺序的每一张牌也都是8S 

备注:
头像 td1336065617
发表于 2020-07-11 22:45:40
菜鸡解法 暴力算 class Solution { public: /** * * @param x string字符串 字符串从前到后分别是从上到下排列的n张扑克牌 * @return string字符串 */ string Ordero 展开全文
头像 _黄歪歪_B站录播
发表于 2020-07-12 08:54:17
首先这题最好的做法肯定是用容斥但是动态规划也是可行的,只是写起来麻烦很多f[i][j][l][r]代表做完前i行,满足下三个条件的方案数:1、前i行一共放了j个石头2、l = (左边一列是否有石头)3、r = (右边一列是否有石头)边界为 f[0][0][0][0] = 1然后从前往后枚举每一行,考 展开全文
头像 摸鱼学大师
发表于 2021-09-02 13:16:45
思路: 题目的主要信息: 一个长度为n的字符串,用数字表示牌的点数,字母'C''D''H''S'表示花色,同一牌这两部分相连,即长度为n的字符串有张牌 如果还剩下素数张牌,则扔掉牌顶,如果还剩下非素数张牌则将牌底扔掉 求扔掉全部牌的顺序,输出字符串 方法一:暴力判断素数+字符串截取具体做法:对于 展开全文
头像 牛客805903590号
发表于 2020-07-11 22:19:19
class Solution {public: /** * * @param n int整型 * @param num int整型vector * @return int整型 */ int getMaxLength(int n, vector< 展开全文
头像 xqxls
发表于 2021-08-26 17:43:15
题意整理 给定n张扑克牌,每张牌由字符1-9,以及对应的花色字符组成。 如果还剩非素数张牌,则扔掉牌低的牌;还剩素数张牌,则扔掉牌顶的牌。 返回扔牌顺序的字符串。 方法一(字符串截取) 1.解题思路 新建可变字符串sb。 如果剩余牌数不是素数,从尾部截取对应的牌放入sb,保留截取后的字符串。 展开全文
头像 泪无声呢
发表于 2021-10-09 21:02:35
牛牛扔牌 描述 现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成。点数为‘1’-‘9’的正整数,花色为'C','D','H','S''其中的一个,分别表示梅花、方块、红桃、黑桃。现在想按一定的顺序把这n张牌扔掉。扔牌顺序的规则如下1.: 1.如果现在还剩素数张牌,则将牌顶的 展开全文
头像 简单666
发表于 2021-08-29 10:40:32
题意: 给你一个长度为 的字符串,n为偶数,现在要执行 次操作,操作规则为:若 为素数,则将当前字符串的前2位删除并追加到答案字符串中。若 为非素数,则将当前字符串的后2位删除并追加到答案字符串中,求最后的答案字符串(初始时答案字符串为空串)。 解法一(素数判断+模拟): 维 展开全文