牛客竞赛每日俩题 - Day14

news2025/1/4 21:37:09

目录

错排算法

三维数组的应用


错排算法

发邮件__牛客网

错排:
假设有n封信要装入到n个信封中,每封信应该要放到对应的信封中,比如:

信:   A B C D...
信封: a b c d. ...
由于疏忽将信放置出错,总共有多少种可能性每封信都放错

假设:D(n)表示n封信总共装错的总数

如果A装入到b的信封中:

  • 将B信装入到A的信封中(a、b互相放错形成独立): A-->b B-->a出错的总数:取决于剩余的n-2封信: D(n-2)
  • 将B信装入到除A以外的其他信封(只有A与b完成独立):剩余n-1封信放错的可能性为D(n-1)


所以A装错到b的信封后有D(n-1) +D(n-2)种出错数
同理,如果将A装入到C、D、E (n-2)*(D(n-1)+D(n-2));

总的出错总数:(n-1)*(D(n-1)+D(n-2));

特殊的:

如果是0封信:D(0)--->0

如果是1封信:D(1)--->0

如果是2封信: D(2)--->1

#include<iostream>
using namespace std;

int main()
{
    long long d[21]={0,0,1};
    for(int i=3;i<=20;i++)
    {
        d[i]=(i-1)*(d[i-1]+d[i-2]);
    }
    int n;
    while(cin>>n)
        cout<<d[n]<<endl;
    return 0;
}

三维数组的应用

五子棋__牛客网

 核心在于构建三维数组以遍历方向;

int d[横竖斜线][两个小方向][坐标x,y]={ {{x1,y1},{x2,x2}},{...},{},{} }

可以理解为二维数组里面存数组,例如 int a[][]={ {【数组】},{...},{} }

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define N 20
int count(string table[], char ch, int x, int y)
{
	int maxc = 0;
	int dir[4][2][2] = { {{ -1,0 },{ 1,0 }},
                        {{ 0,-1 },{ 0,1 }},
                        {{ -1,-1 },{1,1 }},
                        {{ -1,1 },{ 1,-1 }} };
	for (int i = 0; i < 4; ++i) // 四种方向
	{
		int c = 0;
		for (int j = 0; j < 2; ++j) // 两个小方向
		{
			int nx = x, ny = y;
			while (nx >= 0 && nx < N && ny >= 0 && ny < N && table[nx][ny] ==ch)
			{
				nx += dir[i][j][0];
				ny += dir[i][j][1];
				++c;
			}
		}
		maxc = max(maxc,c);
	}
	return maxc - 1; //统计两个方向(如横向的左右两个方向)的时候,
                     //当前棋子被计算了两次
}
bool solve(string table[])
{
	// 遍历棋谱,如果某个位置有棋子,再想该位置进行搜索
	for (int i = 0; i < N; ++i)
	{
		for (int j = 0; j < N; ++j)
		{
			if (table[i][j] == '*' || table[i][j] == '+')
				// 当某个位置有连在一起的棋子,结束搜索
				if (count(table, table[i][j], i, j) >= 5)
					return true;
		}
	}
	return false;
}
int main()
{
	string table[N];
	while (cin >> table[0])
	{
		for (int i = 1; i < N; ++i)
			cin >> table[i];
		cout << (solve(table) ? "Yes" : "No") << endl;
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义类型详解

这次我们来看自定义类型&#xff0c;我们之前接触过的自定义类型就有数组和结构体&#xff0c;我们来详细解析一下这些自定义类型的特点&#xff0c;已经一些我们没接触过的自定义类型 目录 1.结构体 1.1结构体的基础知识 1.2结构体的声明 1.3特殊声明 1.4结构的自引用 …

Mac AndroidStudio生成签名文件,显示SHA1和MD5值

一、首先&#xff0c;生成签名文件 1.点击菜单栏中的Build的。 2.弹出窗体&#xff0c;创建新的KeyStore&#xff1a;如下图。 3.生成jks文件 4.填写keystore和key密码。ketystore密码和key密码在后面会用到。其他信息也不是很重要&#xff0c;自己差不多能记住就好。 5.然后点…

设计模式学习(五):State状态模式

一、什么是State模式 在面向对象编程中&#xff0c;是用类表示对象的。也就是说&#xff0c;程序的设计者需要考虑用类来表示什么东西。类对应的东西可能存在于真实世界中&#xff0c;也可能不存在于真实世界中。 在State模式中&#xff0c;我们用类来表示状态。在现实世界中&a…

【部署】Apache DolphinScheduler 伪集群部署

【部署】Apache DolphinScheduler&#xff08;海豚&#xff09; 伪集群部署&#xff08;Pseudo-Cluster&#xff09;Standalone极速体验版DolphinScheduler 伪集群部署前置准备工作本地部署环境准备 DolphinScheduler 启动环境配置用户免密及权限配置机器SSH免密登陆启动zookee…

解决bootstrap table footerFormatter表脚和表体列错位问题

需求&#xff1a;需要把表格的一列的内容在表最下面一行进行汇总&#xff0c;显示合计 实现合计步骤&#xff1a; 1.在初始化表格时&#xff0c;开启显示表脚的属性&#xff0c;如图 2.在需要合计的列中添加footerFormatter函数&#xff0c;如图 这样就会在表格最下面显示合计…

年度征文 | 再见2022,你好2023

年度征文 | 再见2022&#xff0c;你好2023题记个人简介初衷写作展望题记 这两天打开CSDN&#xff0c;发现消息栏一直提示我写这个年度征文&#xff0c;本来觉得自己没有经验可以分享&#xff0c;毕竟自己仍处于该领域的起步阶段&#xff0c;无法给大家提供有用的建议或实用的总…

功率放大器模块是什么意思(功率放大模块工作原理)

在日常电子实验测试中&#xff0c;很多电子工程师都会经常使用到功率放大器&#xff0c;随着人们对于功率放大器的频繁使用&#xff0c;对于功放的要求也越来越多&#xff0c;有些工程师就想要使用尺寸较小的仪器&#xff0c;功率放大模块便应运而生&#xff0c;今天就请安泰电…

关于几个坐标系的关系NED ENU ROS

几个坐标系转来转去&#xff0c;时间一长又搞混了。 地球固连坐标系 WND 地球固连坐标系 NED 机体坐标系 NED 惯性系 x轴在多旋翼对称平面内指向机头&#xff08;机头方向与多旋字形或X字形相关&#xff09;。 z轴在飞机对称平面内&#xff0c;垂直轴向下。然后&#xff0c;按…

从GPT到chatGPT(二):GPT2

GPT2 文章目录GPT2前言正文摘要方法概述训练数据输入表示模型结构实验语言模型Children’s Book Test&#xff08;CBT&#xff09;LAMBADAWinograd Schema Challenge&#xff08;WSC&#xff09;Reading ComprehensionSummarizationTranslationQuestion AnsweringGeneralizatio…

Linux下搭建Git服务器

目录 步骤一.安装Git&#xff1a; 步骤二.安装Gitosis 安装Gitosis依赖的工具 进入到Gitosis目录执行&#xff1a; 出现下面的信息表示安装成功 步骤三.服务器端创建git用户来管理Git服务 服务器端的Git配置公钥 步骤四.服务器端创建Git仓库 步骤五.客户端clone服务器…

PPT如何转换成PDF?三种转换方法告诉你

大家在工作中会使用PPT格式的文件来汇报工作流程吗&#xff1f;当上级领导要求你将这些工作内容全部汇总&#xff0c;并用PDF文件发给他的时候&#xff0c;你是怎么做的呢&#xff1f;是重新将内容复制黏贴到PDF文件中吗&#xff1f;今天告诉你一个简单的方法&#xff0c;其实只…

【echarts】自定义legend样式 echarts图例与⽂字对齐问题

较完整的使用介绍参考&#xff1a;https://blog.csdn.net/changyana/article/details/126281275 起因 今天使⽤echarts时发现官⽹⽰例图例部分并没有进⾏对齐&#xff0c;⼀上⼀下逼死强迫。。。 解决办法 textStyle: { // 添加height: 10, // 关键在这个height设置rich: …

前端开发-异常问题记录

Q1&#xff1a;Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示&#xff1b; 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决 Q2&#xff1a;浏览器跨域问题&#xff08;通过配置浏览器解决&#xff09; 将chrome浏览器复制一个进行修改&#xff…

CRM如何帮助企业提高工作效率?

企业管理者在创建团队时&#xff0c;除了要凝聚人心&#xff0c;更注重效率&#xff0c;企业团队的工作效率直接决定了企业的生产力&#xff0c;生产力决定战斗力&#xff0c;使用CRM系统可以帮助企业提高工作效率。 前言 企业管理者在创建企业团队时&#xff0c;除了要凝聚人…

IOS开发基础 · SwiftUI · StanfordCS193p Lecture3-4

IOS开发Lecture3MVVMVarieties of Typesstruct & classdont care - genericsFunctionClosuresprivate(set)for函数作为参数传给函数初始化顺序Lecture4修改代码View界面预览代码修改构建View-ViewMode点击事件让bool值反转internal external nameprint("\( )")st…

NeurIPS 2022: S3GC 可扩展图聚类

talk 文章的创新性不大&#xff0c;meta-review是给了 如果还可接收&#xff0c;再考虑。 但是 本文确实是 可扩展图聚类的重要一步。已有的方法 或多或少只在 小的数据集上 进行聚类。 存在一些非聚类的通用gnn方法进行采样。本文就是利用采样降低复杂度&#xff0c;并进行大…

基于FPGA的UDP 通信(四)

引言 前文链接&#xff1a; 基于FPGA的UDP 通信&#xff08;一&#xff09; 基于FPGA的UDP 通信&#xff08;二&#xff09; 基于FPGA的UDP 通信&#xff08;三&#xff09; 本文基于FPGA与MATLAB作千兆以太网通信模块UDP数据接收实验板级验证&#xff1a;FPGA接收上位机数…

大前端 TOB 0.5 WordPress模板 漂亮大气自适应多终端多功能

tob主题基于WordPress程序&#xff0c;响应式布局支持电脑、平板和手机的完美展示。tob适用于各种图片展示网站、新闻站、电影站、美图站、资源站等等&#xff0c;扁平化设计、公众号展示、打赏功能、列表无限加载、相册功能。tob是基于WordPress程序的主题&#xff0c;由theme…

多线程与高并发(五)

【ReentrantLock源码】&#xff1a; 【AQS源码】&#xff1a; 【公平与非公平】&#xff1a; 【公平】&#xff1a; 线程想要获得一把锁&#xff0c;乖乖的去这把锁的等待队列里排队————公平。 【非公平】&#xff1a; 线程想要获得一把锁&#xff0c;不去排队&#xff0c…

嵌入式实时操作系统的设计与开发(九)

同步机制 aCoral信号量机制不仅可以实现临界资源互斥访问&#xff0c;控制系统中临界资源多个实例的使用&#xff0c;还可以用于维护线程之间、线程和中断之间的同步。 当信号量用来实现同步时&#xff0c;起始值为0&#xff0c;如一个线程正在等待某个I/O操作&#xff0c;当…