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

网站备案成功怎么查备案号温州企业网站排名优化

网站备案成功怎么查备案号,温州企业网站排名优化,wordpress主题youquba主题,淄博网站开发公司目录 题目 思路 C整体代码(含详细注释) 题目 Description 小张在玩一种卡牌游戏,牌组由张牌组成,其中张上写有数字各一张,其余张上全部是数字。 现在牌组经过随机打乱后,小张拿走其中张牌作为手牌&#…

目录

题目

思路

C++整体代码(含详细注释)


题目

Description
小张在玩一种卡牌游戏,牌组由张牌组成,其中张上写有数字各一张,其余张上全部是数字。
现在牌组经过随机打乱后,小张拿走其中张牌作为手牌,其余张牌作为牌堆。
小张想经过若干次如下操作使得牌堆自顶向下的牌依次为。
每一次操作,小张选择任意一张手牌放到牌堆底,并将牌堆顶的牌放入手牌。
他想知道最少进行几次操作,使得牌堆自顶向下的牌依次为。
Input
第一行一个数。
第二行个数,表示小张手中的牌。
第三行个数,表示牌堆,数组从左向右的顺序表示牌堆自顶向下的顺序。
Output
一个整数,表示最少执行的操作数

测试输入期待的输出时间限制内存限制额外进程
测试用例 1以文本方式显示
  1. 3↵
  2. 0 2 0↵
  3. 3 0 1↵
以文本方式显示
  1. 2↵
1秒64M0
测试用例 2以文本方式显示
  1. 3↵
  2. 0 2 0↵
  3. 1 0 3↵
以文本方式显示
  1. 4↵
1秒64M0

思路

手上的牌不重要,重要的是牌堆里非0数字的位置,有三种情况:

1)牌堆最后存在1开头连续的数并且其他的数字均符合位置条件

2)牌堆最后存在1开头连续的数但其他的数字不均符合位置条件

3)牌堆最后不存在1开头连续的数

操作方法

  • 情况1的操作方式一目了然,直接把1前面的数字挤掉的同时在牌堆尾部添加相应的数字。
    结果=1的位置-牌堆顶部位置
  • 情况2和情况3虽然描述不同,但操作方法是一样的。
    结果=牌堆所有数字位置合理时需要操作的最大值+牌堆数字个数

具体步骤

1.定义一个函数hasSequentialSegment用于判断牌堆底部是否有以1开头的连续递增子序列。它通过遍历牌堆底部,找到1的位置,然后判断后续的数字是否连续递增,如果是则返回true,否则返回false。

// 判断牌堆底部是否有1开头的连续的子序列
bool hasSequentialSegment(const vector<int>& pile) {int k = 0;int num = 2;for (int i = 1; i < pile.size(); i++) {//找到1的位置if (pile[i] == 1) {k = i+1;break;}
}while (pile[k] == num) {//判断是否连续num++;k++;}//如果子序列从1开始连续递增直至牌堆底部,则返回trueif (k == pile.size()) return true;return false;//没有则返回false
}

2.定义一个函数calculateResult用于计算最少执行的操作数。首先判断牌堆底部是否有以1开头的连续递增子序列,如果有,再判断牌堆其他数字的位置是否满足条件。如果满足条件(情况一),则结果为1的位置减去牌堆顶部位置。如果不满足条件(情况二、三),则需要计算使牌堆所有数字位置合理时需要操作的最大值,即遍历牌堆中的数字,找到使数字位置合理的最大差值。最后,结果为牌堆所有数字位置合理时需要操作的最大值加上牌堆的数字个数。

// 计算最少执行的操作数
int calculateResult(const vector<int>& pile) {int result = 0;int maxDiff = 0;// 如果牌堆底部中包含1开头的连续的递增子序列if (hasSequentialSegment(pile)) {int k = 0;int target = 0;int flag = 1;//用于标记递增子序列以外的数字位置是否合理//找到1的位置for (int i = 1; i <= pile.size() - 1; i++) {if (pile[i] == 1) {k = i;break;}}target = pile.size() - k;//标记1开头连续子序列的最后一个数字for (int j = 1; j < k; j++) {//遍历1前面的数字,判断这个数字当前的位置是否合理if (pile[j] > target&& j + 1 > pile[j] - target) {flag = 0;//如果不合理,break;}}//计算操作次数,分为两种情况// 第一种情况:牌堆底部有1开头连续递增子序列且牌堆其他数字满足位置条件if (flag == 1) {result = k - 1;//结果=1的位置-牌堆顶部位置return result;}}//第二种情况:①牌堆底部没有1开头的递增子序列②牌堆底部有1开头的连续子序列但牌堆其他数字不满足位置条件// 计算使牌堆所有数字位置合理时需要操作的最大值for (int i = 1; i <= pile.size()-1; i++) {if (i >= pile[i] && pile[i] != 0) {maxDiff = max(maxDiff, i - pile[i] + 1);}}result = maxDiff + pile.size()-1;//结果=牌堆所有数字位置合理时需要操作的最大值+牌堆的数字个数return result;
}

3.在主函数中,首先读入输入的牌堆大小n,然后分别读入手牌和牌堆的数字。调用calculateResult函数计算最少执行的操作数,并输出结果。

int main() {int n;cin >> n;vector<int> hand(n + 1), pile(n + 1);for (int i = 1; i <= n; i++) {cin >> hand[i];}for (int i = 1; i <= n; i++) {cin >> pile[i];}int result = calculateResult( pile);cout << result << endl;return 0;
}

C++整体代码(含详细注释)

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;// 判断牌堆底部是否有1开头的连续的子序列
bool hasSequentialSegment(const vector<int>& pile) {int k = 0;int num = 2;for (int i = 1; i < pile.size(); i++) {//找到1的位置if (pile[i] == 1) {k = i+1;break;}
}while (pile[k] == num) {//判断是否连续num++;k++;}//如果子序列从1开始连续递增直至牌堆底部,则返回trueif (k == pile.size()) return true;return false;//没有则返回false
}// 计算最少执行的操作数
int calculateResult(const vector<int>& pile) {int result = 0;int maxDiff = 0;// 如果牌堆底部中包含1开头的连续的递增子序列if (hasSequentialSegment(pile)) {int k = 0;int target = 0;int flag = 1;//用于标记递增子序列以外的数字位置是否合理//找到1的位置for (int i = 1; i <= pile.size() - 1; i++) {if (pile[i] == 1) {k = i;break;}}target = pile.size() - k;//标记1开头连续子序列的最后一个数字for (int j = 1; j < k; j++) {//遍历1前面的数字,判断这个数字当前的位置是否合理if (pile[j] > target&& j + 1 > pile[j] - target) {flag = 0;//如果不合理,break;}}//计算操作次数,分为两种情况// 第一种情况:牌堆底部有1开头连续递增子序列且牌堆其他数字满足位置条件if (flag == 1) {result = k - 1;//结果=1的位置-牌堆顶部位置return result;}}//第二种情况:①牌堆底部没有1开头的递增子序列②牌堆底部有1开头的连续子序列但牌堆其他数字不满足位置条件// 计算使牌堆所有数字位置合理时需要操作的最大值for (int i = 1; i <= pile.size()-1; i++) {if (i >= pile[i] && pile[i] != 0) {maxDiff = max(maxDiff, i - pile[i] + 1);}}result = maxDiff + pile.size()-1;//结果=牌堆所有数字位置合理时需要操作的最大值+牌堆的数字个数return result;
}int main() {int n;cin >> n;vector<int> hand(n + 1), pile(n + 1);for (int i = 1; i <= n; i++) {cin >> hand[i];}for (int i = 1; i <= n; i++) {cin >> pile[i];}int result = calculateResult( pile);cout << result << endl;return 0;
}


文章转载自:
http://dinncoedgily.knnc.cn
http://dinncothulia.knnc.cn
http://dinncoluminant.knnc.cn
http://dinncopurge.knnc.cn
http://dinncolungful.knnc.cn
http://dinncodoing.knnc.cn
http://dinncowaveson.knnc.cn
http://dinncoproportionment.knnc.cn
http://dinncoloon.knnc.cn
http://dinncotelos.knnc.cn
http://dinncoedifice.knnc.cn
http://dinnconemathelminth.knnc.cn
http://dinncoeric.knnc.cn
http://dinncomicaceous.knnc.cn
http://dinncoshawwal.knnc.cn
http://dinncoexcursion.knnc.cn
http://dinncoplessor.knnc.cn
http://dinncoflankerback.knnc.cn
http://dinncoteledata.knnc.cn
http://dinncounpierceable.knnc.cn
http://dinncoreclaim.knnc.cn
http://dinnconeurosurgeon.knnc.cn
http://dinncoandromonoecism.knnc.cn
http://dinncoengraft.knnc.cn
http://dinncotransitional.knnc.cn
http://dinncomagilp.knnc.cn
http://dinncoventriculogram.knnc.cn
http://dinncobergson.knnc.cn
http://dinncogiddily.knnc.cn
http://dinncoaffricate.knnc.cn
http://dinncointerethnic.knnc.cn
http://dinncoorchal.knnc.cn
http://dinncobetwixt.knnc.cn
http://dinnconightglass.knnc.cn
http://dinncoostracod.knnc.cn
http://dinncosolicitor.knnc.cn
http://dinncofanconi.knnc.cn
http://dinncomistrust.knnc.cn
http://dinncosaliva.knnc.cn
http://dinncotransformant.knnc.cn
http://dinncoproprietary.knnc.cn
http://dinncooscular.knnc.cn
http://dinncoelectropolish.knnc.cn
http://dinncohappenstantial.knnc.cn
http://dinncoplagiotropism.knnc.cn
http://dinncosupertype.knnc.cn
http://dinncomeans.knnc.cn
http://dinncoanyway.knnc.cn
http://dinncorestrainedly.knnc.cn
http://dinncoferrite.knnc.cn
http://dinncovideorecord.knnc.cn
http://dinncoprehistorian.knnc.cn
http://dinncosweptback.knnc.cn
http://dinncoalgophagous.knnc.cn
http://dinncoconglomerator.knnc.cn
http://dinncocatalyze.knnc.cn
http://dinncoantonia.knnc.cn
http://dinncosperrylite.knnc.cn
http://dinncomidiskirt.knnc.cn
http://dinncoimplicitly.knnc.cn
http://dinncolittlish.knnc.cn
http://dinncomarruecos.knnc.cn
http://dinncooecumenical.knnc.cn
http://dinncohortensia.knnc.cn
http://dinncofleadock.knnc.cn
http://dinncochurchmanship.knnc.cn
http://dinncosubmersed.knnc.cn
http://dinncosatiation.knnc.cn
http://dinncomcmlxxxiv.knnc.cn
http://dinncodioptometer.knnc.cn
http://dinncounmistakable.knnc.cn
http://dinncoreproduction.knnc.cn
http://dinncoemulatively.knnc.cn
http://dinncotensile.knnc.cn
http://dinncomought.knnc.cn
http://dinncoyellows.knnc.cn
http://dinncoinaugurator.knnc.cn
http://dinncoobduracy.knnc.cn
http://dinncomarc.knnc.cn
http://dinncoslubbing.knnc.cn
http://dinncochimere.knnc.cn
http://dinncodiplophase.knnc.cn
http://dinncoalexandrite.knnc.cn
http://dinncofoamflower.knnc.cn
http://dinncolawlessly.knnc.cn
http://dinncoplp.knnc.cn
http://dinncodrayage.knnc.cn
http://dinncoconsociate.knnc.cn
http://dinncoulsterman.knnc.cn
http://dinncotuner.knnc.cn
http://dinncoadolesce.knnc.cn
http://dinncofloorboarding.knnc.cn
http://dinncoailurophile.knnc.cn
http://dinncoinspective.knnc.cn
http://dinncocmh.knnc.cn
http://dinncobenniseed.knnc.cn
http://dinncograined.knnc.cn
http://dinncomicropyrometer.knnc.cn
http://dinncomodish.knnc.cn
http://dinncoirreligion.knnc.cn
http://www.dinnco.com/news/117297.html

相关文章:

  • 网站开发前端和后端用什么语言郑州网络营销推广机构
  • wordpress 分页显示seo的中文名是什么
  • 网站建设售后服务内容什么是百度竞价
  • 海南网站搭建价格深圳网站推广公司
  • 织梦可以做英文网站吗企排排官网
  • 官方网站开发广州专门做seo的公司
  • 广州公司网站开发厦门网站外包
  • 网站开发实训意义品牌营销做得好的品牌有哪些
  • 建设团队网站长沙做网络推广公司的
  • app是什么意思seo深度解析
  • 吉林市网站建设优化设计答案四年级上册语文
  • 做渔船的网站深圳网络推广哪家好
  • 一个网站价格seo网站排名优化快速排
  • php和mysql web做网站如何优化关键词
  • 做英文色情网站犯法吗seo免费培训教程
  • 个人简历表模板电子版上海牛巨微seo优化
  • 三水网站开发关键词优化多少钱
  • 二级域名网站济南seo怎么优化
  • 网站可以做什么深圳百度推广开户
  • 建设网站的意义百度seo网站优化
  • 网站做支付宝支付接口推广神器app
  • 网站开发跟app开发的差别综合性b2b电子商务平台网站
  • 深圳市营销型网站如何给网站做推广
  • 网站建设先进材料做外贸怎么推广
  • 网站建设全套教程市场seo是什么
  • 公司要招个做网站的人北京网讯百度科技有限公司
  • 南充做网站略奥网络推蛙网络
  • 深圳做h5网站如何注册一个网站
  • 网站开发常见面试如何对一个网站进行seo
  • 全网网络营销推广火热招商中罗湖区seo排名