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

牛客竞赛每日俩题 - Day14

目录

错排算法

三维数组的应用


错排算法

发邮件__牛客网

错排:
假设有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;
}

相关文章:

  • Three.js一学就会系列:05 加载3D模型
  • Python2.x和3.x主要差异总结
  • Vue中引入react组件
  • python的8大核心语句,你确定不来看看嘛,那格局就小啦
  • windows排查问题常用命令
  • 2023年网络安全比赛--跨站脚本攻击中职组(超详细)
  • SkyEye:针对飞行模拟器的仿真解决方案
  • 基于Python + Django 的密码自助平台项目(完整代码)
  • 写作的“收益”超乎想象
  • 前端号外—2022年明星项目居然是它,Node.js危已?
  • 六道算法基础题详解
  • 【Linux】在Linux上写一个进度条小程序
  • C生万物 | 函数的讲解与剖析【内附众多案例详解】
  • Spring为什么这么火 之 Spring蕴含的设计思想
  • 来自一位双非本科大二学生的?自我救赎:堕落——蜕变
  • 《Java编程思想》读书笔记-对象导论
  • ➹使用webpack配置多页面应用(MPA)
  • Angular 响应式表单 基础例子
  • ES6系统学习----从Apollo Client看解构赋值
  • gcc介绍及安装
  • GitUp, 你不可错过的秀外慧中的git工具
  • input的行数自动增减
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • 初探 Vue 生命周期和钩子函数
  • 前端面试题总结
  • 系统认识JavaScript正则表达式
  • 因为阿里,他们成了“杭漂”
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 仓管云——企业云erp功能有哪些?
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​用户画像从0到100的构建思路
  • #前后端分离# 头条发布系统
  • (Java数据结构)ArrayList
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (学习日记)2024.01.19
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .net Application的目录
  • .NET Core Web APi类库如何内嵌运行?
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Core跨平台微服务学习资源
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 无限分类
  • ::什么意思
  • @ModelAttribute 注解
  • @Responsebody与@RequestBody
  • [ C++ ] STL_list 使用及其模拟实现
  • []C/C++读取串口接收到的数据程序
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)