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

蓝桥杯-洛谷刷题-day5(C++)(为未完成)

1.P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

        i.题目

        ii.代码

#include <iostream>  
#include <string>
using namespace std;

int N, Na, Nb;
//0-"剪刀", 1-"石头", 2-"布", 3-"蜥", 4-"斯";
//单纯的两个数比较剪刀石头布,a赢了返回1,输了返回0,平手返回2
int compare(int a, int b)
{
	if (a == 0)
	{
		switch (b)
		{
		case 0:
			return 2;
			break;
		case 1:
			return 0;
			break;
		case 2:
			return 1;
			break;
		case 3:
			return 1;
			break;
		case 4:
			return 0;
			break;
		default:
			break;
		}
	}
	else if (a == 1)
	{
		switch (b)
		{
		case 0:
			return 1;
			break;
		case 1:
			return 2;
			break;
		case 2:
			return 0;
			break;
		case 3:
			return 1;
			break;
		case 4:
			return 0;
			break;
		default:
			break;
		}
	}
	else if (a == 2)
	{
		switch (b)
		{
		case 0:
			return 0;
			break;
		case 1:
			return 1;
			break;
		case 2:
			return 2;
			break;
		case 3:
			return 0;
			break;
		case 4:
			return 1;
			break;
		default:
			break;
		}
	}
	else if (a == 3)
	{
		switch (b)
		{
		case 0:
			return 0;
			break;
		case 1:
			return 0;
			break;
		case 2:
			return 1;
			break;
		case 3:
			return 2;
			break;
		case 4:
			return 1;
			break;
		default:
			break;
		}
	}
	else if (a == 4)
	{
		switch (b)
		{
		case 0:
			return 1;
			break;
		case 1:
			return 1;
			break;
		case 2:
			return 0;
			break;
		case 3:
			return 0;
			break;
		case 4:
			return 2;
			break;
		default:
			break;
		}
	}
}

void testlan()
{
	//分值
	int sumA = 0, sumB = 0;
	//输入三个整数
	cin >> N >> Na >> Nb;
	//输入A、B的序列
	//首先,定义动态数组数组(最后要释放)
	int* sqA = new int[Na];
	int* sqB = new int[Nb];
	//用temp暂存输入的每一个值
	int temp;
	for (int i = 0; i < Na; i++)
	{
		cin >> temp;
		sqA[i] = temp;
	}
	for (int i = 0; i < Nb; i++)
	{
		cin >> temp;
		sqB[i] = temp;
	}
	

	//开始比较
	int pa = 0, pb = 0;//指针
	for (int i = 0; i < N; i++)
	{
		if (compare(sqA[pa], sqB[pb]) == 1)
		{
			sumA++;
			//cout << sqA[pa] << "对" << sqB[pb] << "结果为:" << compare(sqA[pa], sqB[pb]) << ' ' << "sumA:" << sumA << endl;
		}
		else if (compare(sqA[pa], sqB[pb]) == 0)
		{
			sumB++;
			//cout << sqA[pa] << "对" << sqB[pb] << "结果为:" << compare(sqA[pa], sqB[pb]) << ' ' << "sumB:" << sumB << endl;
		}
			
		//pa,pb的环形递增(类比循环队列。。。)
		pa = (pa + 1) % Na;
		pb = (pb + 1) % Nb;
		/*if (pa < Na)
			pa++;
		else if (pa == Na)
			pa = 0;
		if (pb < Nb)
			pb++;
		else if (pb == Nb)
			pb = 0;*/
	}

	cout << sumA << ' ' << sumB << endl;
	delete[] sqA, sqB;
}

int main()
{
	testlan();

	return 0;
}

2.严格按照题目

        上文的这个题目,刚开始的时候,因为是剪刀石头布就放松了,完全忽略了相等时的情况,没有对照题目,思虑不周,浪费了很多时间,如果写代码的时候严格对照题目,逐行逐句地将各种情况一一敲出来,大概率不会浪费没必要的时间。引以为戒。(~.~)

3.P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

4.读入一段英文语句,获取最后一个单词的长度。

相关文章:

  • COMDEL电源CDX1000 13.56MHz 2MHz DUAL RF GENERATOR手侧
  • 天地图(uniapp)搜索、定位自己、获取标记点的经纬度
  • 数据结构 day06
  • 【Qt 比较常用的字符串处理函数】查找、比较、转换、截取、替换、插入、删除、格式化、分割、比较排序
  • VSCode Error Lens插件介绍(代码静态检查与提示工具)(vscode插件)
  • 前端实现在PDF上添加标注(1)
  • D365(Dynamics 365 CE/PO)审计记录(Audit)一点点分析
  • linux下c++连接mysql
  • 数据结构:哈夫曼树
  • 【SpringBoot实现全局API限频】 最佳实践
  • Ceph集群搭建2025(squid版)
  • 【机器学习】线性回归与一元线性回归
  • Oracle日常管理(8)——DB日常管理(1)
  • Python(二十)实现各大跨境船公司物流查询新增[ARKAS Line]船司
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-plotting.py
  • 【ESP32接入国产大模型之Deepseek】
  • 2.5 模块化迁移策略:从传统项目到模块化系统
  • 算法——结合实例了解启发式搜索
  • 网络安全的现状如何?
  • LabVIEW 中dde.llbDDE 通信功能
  • 手机网站的好外/每日一则小新闻
  • 别人做的网站域名到期怎么办/培训网站
  • 深圳市住房和建设局网站变更/百度指数数据下载
  • 网站域名需要备案吗/全网营销平台
  • 做招聘网站的风投/口碑营销成功案例
  • 手机网站制作公司 广州/哪里可以买链接网站