week4 CS-C - 可怕的宇宙射线

2023-12-15 03:49
文章标签 cs 可怕 week4 宇宙射线

本文主要是介绍week4 CS-C - 可怕的宇宙射线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述:

宇宙射线会在无限的二维平面上传播(可以看做一个二维网格图),初始方向默认向上。宇宙射线会在发射出一段距离后分裂,向该方向的左右45°方向分裂出两条宇宙射线,同时威力不变。宇宙射线会分裂n次,每次分裂后会在分裂方向前进ai 个单位长度。计算出共有多少个位置会被打击。

输入:
输入第一行包含一个正整数n(n <= 30),表示宇宙射线会分裂n次,第二行包含n个正整数a1,a2…an,第i个数ai(ai <= 5)表示第i次分裂的宇宙射线会在它原方向上继续走多少个单位长度。
输出:
输出一个数ans,表示有多少个位置会被降智打击。

输入样例:
4
4 2 2 3
输出样例:
39

问题描述:

这道题思路很清晰,由于每条射线都不受其他射线的干扰,所以最简单的思路就是递归思想,经分析可知,射线最多有8个方向,每到一个分裂点只会往当前方向的相邻两个方向辐射,故利用递归很容易能求得答案的解,但是时间性能太差了,所以要改善时间性能,分析可知,射线往每个方向不会超过150个距离,所以可以直接用二维数组对点进行标记,当c[i][j]为1时,表示该点已到达,同时要用斯维数组对射线进行标记,避免很多重复搜索。这样,时间性能就改善了不少,题目得解。

实验代码:

#include<iostream>
using namespace std;int dx[8]={0,1,1,1,0,-1,-1,-1};
int dy[8]={1,1,0,-1,-1,-1,0,1};
int a[31]={0};
bool b[300][300][8][33] = {0};
bool c[333][333];
int n;
int ans;
void shexian(int d,int fx,int x,int y) 
{if(d>=n)	return ;int xx=x,yy=y;for(int i=1;i<=a[d];i++)	 {xx=x+i*dx[fx];yy=y+i*dy[fx];if(!c[xx][yy]){c[xx][yy]=1;ans++;}			} b[x][y][fx][d]=1;int f=(fx+1)%8;if(!b[xx][yy][f][d+1])shexian(d+1,f,xx,yy);f=(fx+7)%8;if(!b[xx][yy][f][d+1])shexian(d+1,f,xx,yy);
}
int main(void)
{cin>>n;for(int i=0;i<n;i++)cin>>a[i];shexian(0,0,150,150);cout<<ans<<endl;return 0;
}

这篇关于week4 CS-C - 可怕的宇宙射线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/495000

相关文章

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

Accept CS Ph.D. Offer from Stony Brook University,去SUNY石溪大学的CS Ph.D.啦

前言:在2017年3月24日,正式决定去纽约州立大学石溪分校(State University of New York, Stony Brook,简称石溪大学),CS Ph.D. 项目。本科直博,DIY申请,全额奖学金,第一年5.1万美元(免学费2.2万,2017 fall, 2018 spring 的TA 1.93万,2018 summer RA 1万,没有 Fellowship) Abs

基于C+++Mysql实现(CS界面)校友管理系统(面向对象)

校友管理系统(面向对象课程设计) 前言 校友管理系统要求以高校校友管理业务为背景,设计管理系统程序。 系统需要包含的主要信息有:校友基本信息:序号,姓名,电话,专业,现从事的专业,职务,工作年限,所在城市等;工作单位信息:单位名称,所属行业,单位性质(高校,企业、事业单位等),单位规模等;毕业学校信息:学校代码,校名,地址,性质(985,211,一班本科等)等;校友联系信息:校友姓名,所在城

CS(布谷鸟搜索)算法MATLAB源码逐行中文注解

以优化SVM算法的参数c和g为例,对CS算法MATLAB源码进行了逐行中文注解。 完整程序和示例文件地址:http://download.csdn.net/detail/u013337691/9622335 链接:http://pan.baidu.com/s/1sl2BzKL 密码:pkdn tic % 计时%% 清空环境导入数据clearclcclose allload wnds

【STM32项目设计】STM32F411健康助手--硬件SPI (硬件NSS/CS)驱动st7735--1.8寸TFT显示屏(1)

#include "lcd_driver.h"static uint16_t SPI_TIMEOUT_UserCallback(uint8_t errorCode);//液晶IO初始化配置void LCD_Driver_Init(void){SPI_InitTypeDef SPI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;/* 使

STM32F411 标准库硬件SPI (硬件NSS/CS)驱动st7735--1.8寸TFT显示屏

TFT的spi驱动文件 完整工程网盘放在末尾 #include "lcd_driver.h"static uint16_t SPI_TIMEOUT_UserCallback(uint8_t errorCode);//液晶IO初始化配置void LCD_Driver_Init(void){SPI_InitTypeDef SPI_InitStructure;GPIO_InitTypeDef

MAC出现:未能正确打开SANGFOR SSL Virtual网卡,暂时不能提供SSL CS服务,请联系管理员

MAC出现:未能正确打开SANGFOR SSL Virtual网卡,暂时不能提供SSL CS服务,请联系管理员     一,前言      在电脑登录 vpn 时,登陆VPN出现“未能正确打开SANGFOR SSL Virtual网卡,暂时不能提供SSL CS服务,请联系管理员”,看到状态又是获取到了虚拟IP,资源使用不了的情况

【C#】【EXCEL】BumblebeeComponentsAnalysisGH_Ex_Ana_CondBlank.cs

这段代码定义了一个名为 GH_Ex_Ana_CondBlank 的类,它是一个 Grasshopper 组件,用于在 Excel 工作表中为特定范围添加条件格式。具体功能和介绍如下: 功能概述: 这个组件用于在 Excel 中为指定的单元格范围添加基于空白值的条件格式。它允许用户高亮显示空白或非空白的单元格。 主要特性: 可以设置高亮颜色可以选择高亮空白或非空白单元格可以选择清除现有的条件格

ARTS-for-week4-20181109

每周完成一个ARTS:每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称ARTS) 第四周了,哇咔咔。时间过得好快^_^由于微信不支持添加外链,所以大家访问有链接的地方直接滑到文章最底部点击阅读原文就可以访问了^_^ 一  Algorithm

【C#】【EXCEL】Bumblebee/Components/Analysis/GH_Ex_Ana_CondAverage.cs

Bumblebee/Components/Analysis/GH_Ex_Ana_CondAverage.cs 这段代码定义了一个名为 GH_Ex_Ana_CondAverage 的类,它是一个 Grasshopper 组件。这个组件的主要功能是为 Excel 工作表中的一个范围添加基于平均值的’条件格式’。以下是对这个组件的功能和特点的详细介绍: 组件名称和描述: 名称:Conditiona