Battleship (模拟)

项目二:用C++做一个战舰游戏 project(battleships) set(CMAKE_CXX_STANDARD 11) add_executable(battleships battleships.cpp player.h player.cpp) #include"player.h" int main(){ // std::array<std::array<int,10>10> gri... 阅读详情

Battleship

Arkady is playing Battleship. The rules of this game aren't really important.

There is a field of n×n

cells. There should be exactly one k-decker on the field, i. e. a ship that is k

cells long oriented either horizontally or vertically. However, Arkady doesn't know where it is located. For each cell Arkady knows if it is definitely empty or can contain a part of the ship.

Consider all possible locations of the ship. Find such a cell that belongs to the maximum possible number of different locations of the ship.

Input

The first line contains two integers n

and k (1≤k≤n≤100

) — the size of the field and the size of the ship.

The next n

lines contain the field. Each line contains n

characters, each of which is either '#' (denotes a definitely empty cell) or '.' (denotes a cell that can belong to the ship).

Output

Output two integers — the row and the column of a cell that belongs to the maximum possible number of different locations of the ship.

If there are multiple answers, output any of them. In particular, if no ship can be placed on the field, you can output any cell.

Examples
Input
4 3
#..#
#.#.
....
.###
Output
3 2
Input
10 4
#....##...
.#...#....
..#..#..#.
...#.#....
.#..##.#..
.....#...#
...#.##...
.#...#.#..
.....#..#.
...#.#...#
Output
6 1
Input
19 6
##..............###
#......#####.....##
.....#########.....
....###########....
...#############...
..###############..
.#################.
.#################.
.#################.
.#################.
#####....##....####
####............###
####............###
#####...####...####
.#####..####..#####
...###........###..
....###########....
.........##........
#.................#
Output
1 8
Note

The picture below shows the three possible locations of the ship that contain the cell (3,2)

in the first sample.




题意:找出船体相交最多的点,每条船要么水平要么垂直,长度为k

思路:直接暴力模拟,可以先预处理存下每个 . 的上下左右有多少连续的 . 存下来

最后遍历,每当到 . 的时候就看上下左右的长度总共可以包含多少船不断更新

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 120;
int G[N][N];
int up[N][N],dn[N][N],lt[N][N],rt[N][N];
int n,k;
int ansx = 1,ansy = 1;
int cnt,maxn = 0;
int main(){
    char s[N];
    scanf("%d%d",&n,&k);
    for(int i = 1; i <= n; i++){
        scanf("%s",s);
        for(int j = 0; j < n; j++){
            if(s[j] == '.')
                G[i][j+1] = 1;
        }
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            if(G[i][j]){
                lt[i][j] = lt[i][j-1] + 1;
                up[i][j] = up[i-1][j] + 1;
            }
        }
    }
    for(int i = n; i >= 1; i--){
        for(int j = n; j >= 1; j--){
            if(G[i][j]){
                rt[i][j] = rt[i][j+1] + 1;
                dn[i][j] = dn[i+1][j] + 1;
            }
        }
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            if(G[i][j]){
                cnt = 0;
                if(min(lt[i][j],k) + min(rt[i][j],k) > k)
                    cnt += (min(lt[i][j],k) + min(rt[i][j],k) - k);
                if(min(up[i][j],k) + min(dn[i][j],k) > k)
                    cnt += (min(up[i][j],k) + min(dn[i][j],k) - k);
                if(cnt > maxn){
                    maxn = cnt;
                    ansx = i;
                    ansy = j;
                }
            }
        }
    }
    printf("%d %d\n",ansx,ansy);
    return 0;
}

Python学习笔记(5),Battleship 游戏 1.建立“海洋”:一个5*5的网格,每个格子里面的元素均为‘O’,可以使用list来产生5个O,board=[] for item in range(5): board.append(['O']*5) print board 但是这样显示的结果是一行,并非我们想要的 5*5:[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], [' 阅读详情

相关推荐

Kattis - battleship【模拟】

题目链接:Kattis-battleship题目大意:这道题目意思真的好坑。。两个军队作战,互相射击对方的船,输入m,n,k,然后分别输入两个军队的地图。#表示该坐标上为船,_表示该坐标上为水。(两幅地图不相关)给出k个射击坐标,A先开始射击:如果A射击到B船,则继续射击。直到子弹用完 or B方无船 or A射击到水面-->则换B射击 注意: B方无船,A停止射击。为了公平,A,B的回合次数一样,

Linoy 1448

Java Battleship Game

In this programming assignment, your task is to build a simple Battleship game with a text-based interface. There are two players: the player (you) and the opponent (computer). Both players have a 2D grid of n x m squares, where n is the number of rows and

程序设计 1481

2020-2021 ACM-ICPC Brazil Subregional Programming Contest

文章目录2020-2021 ACM-ICPC Brazil Subregional Programming ContestA.Sticker AlbumB.BattleshipE.Party CompanyF.FastmintonG.Game Show!H.SBC's HangarL.LavasparN.Number Multiplication 2020-2021 ACM-ICPC Brazil Subregional Programming Contest A.Sticker Album 题意: 给你一

m0_49959202的博客 1178

battle ship game c++

#include <iostream> #include <string.h> #include <windows.h> #include <stdlib.h> #include <stdio.h> #include <time.h> using namespace std; void displaygam...

qq_24624539的博客 788

双人战舰对战PyGame小项目:含AI对手、完整规则与一键运行支持

用Python和PyGame写的经典战舰游戏,两个人可以面对面玩,也能单人挑战内置AI。游戏严格遵循战舰规则:每人部署5艘长度从2到5格不等的船,轮流报坐标射击,命中显示红色X,未命中显示蓝色O,击沉全部敌舰获胜。AI不是乱猜,会根据上一轮是否命中来调整后续攻击策略,比如命中后自动沿横纵方向试探相邻格子。所有代码都在Battleship.py一个文件里,结构清晰,包含网格绘制、鼠标点击响应、布局生成、射击判定、胜负检测和重开功能。配套README.md写明了怎么安装PyGame、怎么启动游戏、怎么操作(鼠标

tt34567的博客 249

battleship

java battleship 小程序,支持多用户操作

Battleship

Arkady is playing Battleship. The rules of this game aren't really important.There is a field of n×n cells. There should be exactly one k-decker on the field, i. e. a ship that is k cells long oriente...

码农的一亩三分地 1123

BattleShipCpp:一个为大学课程单元制作的简单C ++ BattleShip游戏

欢迎使用Battle Ship C ++ Repo 什么是战舰 是一款棋盘游戏。 在我们的版本中,您只能玩单人模式vs AI。 该项目 我们将此游戏作为单位课程的一个项目进行。 怎么玩 您可以在下载游戏。 您可以在游戏菜单上查看游戏规则。 作者 古斯塔沃·桑托斯(Gustavo Santos)-AL70800-2年级学生 Vasco Teixeira-AL74107-1年级学生 关于我们 我们俩都在(UTAD)学习。

终极游戏物理开发指南:从碰撞检测到运动模拟的完整教程

游戏物理开发是提升编程技能的绝佳实践,通过实现真实世界的物理规律,你可以深入理解算法设计与数学应用。本文将带你探索如何从零开始构建游戏物理系统,从基础的碰撞检测到复杂的运动模拟,结合GitHub推荐项目精选中的实战案例,让你快速掌握核心技术。 ## 为什么学习游戏物理开发? 游戏物理开发不仅能提升你的编程能力,还能培养解决复杂问题的思维方式。通过实现碰撞检测、重力模拟等功能,你将掌握向量运算、

gitblog_01177的博客 405

battleship-extreme:有特殊规则的战舰领养

极限战舰 这是学期“ Programming 2”的一个项目。 贡献者是: 什么是战舰? 战舰(或战舰)是一款适用于两个玩家的游戏,您可以在其中猜测对手隐藏在网格中的五艘船的位置。 玩家轮流喊出一排一排,试图命名一个包含敌方船只的正方形。 该游戏最初由米尔顿·布拉德利(Milton Bradley)于1931年发行,最终被重印为《战舰》。 目标 战舰的目标是在沉没您所有的战舰之前,尝试沉没其他所有玩家。 其他玩家的所有船只都在他/她的棋盘上。 您可以通过调出板上一个正方形的坐标来尝试击中它们。 另一个玩家也尝试通过调出坐标来击中您的飞船。 您和其他玩家都看不到对方的棋盘,因此您必须尝试猜测他们的位置。 物理游戏中的每个棋盘都有两个网格:玩家战舰的下部(水平)部分和上部(游戏过程中为垂直)部分,用于记录玩家的猜测。 在我们的游戏中到底有什么极端? 我们添加了一些规则,这些规则将使游戏变

matlab错误代码114-BattleShip:经典游戏战舰的MATLAB仿真

matlab错误代码114 战舰 这是 Engineering 101 的最后一个小组项目,我们在其中创建了经典游戏战舰的 MATLAB 仿真。 在这个游戏中,用户可以和朋友一起玩,也可以用电脑玩。 玩电脑时,用户可以选择简单模式或困难模式。 在简单模式下,计算机使用随机模式算法,其中随机猜测命中。 觉得这太容易了? 尝试困难模式。 在这种模式下,计算机使用两种不同类型的算法(hunt &target & sink)来击败用户。 经过600次、简单模式300次、困难模式300次的测试,电脑在简单模式下300次全输了,而在算法下,电脑在300次中赢了114次,代表38%的概率用算法战胜用户。 游戏还使用了一个用户友好的 GUI(参见文件 Battleship_Preview),其中船只的位置、船只的名称以及双方玩家的命中和未命中都用颜色编码并显示给用户查看。 该程序还使用 15 种不同的功能来实现游戏并防止任何用户错误。

2018/7/20 CF#476 B. Battleship

题目描述 Arkady is playing Battleship. The rules of this game aren't really important. There is a field of n×nn×n cells. There should be exactly one kk-decker on the field, i. e. a ship that is kk cells...

slark_的博客 556

battleship game

这是一个用java编的简单的游艇游戏,供大家参考

python battleship_从零开始Tensorflow: 用AI深度学习来玩战舰棋

注:此文复制于我的微信公众号,猫猫的AI游乐园 原文链接:从零开始Tensorflow: 用AI深度学习来玩战舰棋​mp.weixin.qq.com上星期和一同事开会讨论设定这个季度的工作目标,结果一进会议室发现小哥在白版上画了个棋盘格子,跟我描述了他昨晚在FB messenger上玩通宵的游戏(如下图),即战舰棋,英文名叫 battleship 也叫 sink U。然后整个会议就变成了讨论各种...

weixin_39728909的博客 591

开源ISP实战(1)——基于Zynq7020的Vivado工程移植与调试

本文详细介绍了将开源ISP项目移植到正点原子Zynq7020开发板的实战过程。重点阐述了在Vivado中进行工程创建、IP核导入、Block Design框架搭建、时钟配置与管脚约束修改等关键步骤,并提供了系统联调与常见问题的排查思路,为FPGA图像处理开发者提供了完整的移植与调试指南。

weixin_29191081的博客 200

别再只盯着DDR5了!聊聊3D DRAM:它凭什么能解决AI算力的内存墙难题?

本文深入探讨了3D DRAM技术如何突破AI算力的内存墙限制。通过立体堆叠架构,3D DRAM在存储密度、带宽和延迟方面实现显著提升,有效解决AI训练和推理中的内存瓶颈问题。文章还分析了三星、SK海力士等巨头的技术路线图,并指出商业化面临的挑战与机遇。

weixin_42685438的博客 188

Python数值模拟实战:从弹道计算到毁伤评估的工程实现

数值模拟是现代工程与科学研究中验证理论、预测性能的核心技术手段。其基本原理是通过建立物理系统的数学模型,利用计算机进行数值求解,从而在虚拟环境中复现或预测真实世界的行为。在工程实践领域,数值模拟技术价值巨大,它能够显著降低实验成本、缩短研发周期,并允许对极端或危险场景进行安全探索。其应用场景广泛,涵盖航空航天、武器效能评估、游戏物理引擎开发及工业设计优化等多个方面。本文以Python为工具,聚焦于外弹道学与终点弹道学这两个关键概念,通过构建一个简化的质点弹道模型,并集成毁伤评估模块,完整演示了如何对特定火炮

weixin_30216561的博客 375

手机如何高效辅助林业调查

手机如何高效辅助林业调查 很多林业工作者将栅格类型的地形图处理后导入平板电脑,在林地使用平板电脑加载小班矢量图,辅助林业调查。但是,如果没有地形图底图,这种方法可能就有难度,而且最重要的是,大部分林地工作者没有能力配置平板电脑。大凡林业基层工作者在林地调查时,除调查记录本等部分纸质材料外,都必然携带手机和水杯,此外其他设备已经成为累赘,尤其是炎热的夏季在杂灌丛生的林地进行调查作业。因此,使用手机...

xu780820的博客 3077

dsh-purge:用宿主补丁拆掉本地 DSH 的拒绝层,一键回滚

模型明明会,回答却是"这个我不能做",拦住它的往往不是模型本身,而是它前面那层 Harness。dsh-purge 是装在本机官方 DeepSeek Harness 上的红队评测插件:对本机安装的 @deepseek-ai 包打宿主补丁,让每个模型都能挂自己的提示词注入,把模型拒绝和宿主拦截分开摆出来,改坏了还能一键还原回出厂状态。 ## 把宿主改写和模型拒绝分开看 别把 Harness 当成

gitblog_00366的博客 236

告别卡顿!用LVGL+DMA刷新STM32F407的SPI屏幕,性能提升实战

本文详细介绍了如何通过LVGL+DMA技术优化STM32F407驱动SPI屏幕的性能,实现接近60FPS的流畅刷新。从硬件瓶颈分析到SPI与DMA的精细化配置,再到LVGL的双缓冲机制与局部刷新优化,提供了一套完整的性能提升方案。特别适合嵌入式GUI开发中面临卡顿问题的工程师参考。

weixin_42531588的博客 378

个人信息保护合规审计人员(中级)能力测试试卷

本文是关于个人信息保护合规审计的考试指南,包含选择题、判断题、简答题和案例分析题。选择题考察《个人信息保护法》的关键条款,如敏感信息处理、跨境传输、委托处理等合规要求。判断题测试对个人信息处理规则的理解,如撤回同意、公开信息处理等。简答题要求阐述审计流程、个人权利、委托处理义务等内容。案例分析题以互联网企业为例,分析违规行为并提出整改建议,涉及数据收集、第三方共享、自动化决策等问题。全文旨在帮助中级审计人员掌握个人信息保护的法律规定和审计实务,提升合规审计能力。

qq_41525079的博客 547

基于Python的战列舰主炮性能测试与数据可视化工程实践

在游戏开发与军事模拟领域,性能测试与数据可视化是评估系统效能、优化设计的关键环节。其核心原理在于通过构建数学模型,将复杂的系统行为(如武器精度、毁伤效果)转化为可量化、可计算的指标,并利用随机模拟(如蒙特卡洛方法)评估其统计特性。这项技术的价值在于,它提供了一种科学、可复现的方法来预测和平衡系统性能,从而辅助决策。在应用场景上,它广泛服务于游戏数值平衡、装备效能评估、训练模拟器开发等领域。本文以战列舰主炮为具体案例,详细展示了如何运用Python的`pandas`、`numpy`和`matplotlib`等

weixin_33994429的博客 460

用Python+OpenCV搞定线激光相机标定:从棋盘格到3D点云的保姆级实战

本文详细介绍了使用Python和OpenCV进行线激光相机标定的全流程实战,从硬件准备到3D点云重建。涵盖相机内参标定、激光平面方程拟合、三维重建等关键技术,提供完整的代码实现和工程优化建议,帮助开发者实现毫米级精度的工业检测和三维测量系统。

weixin_29227425的博客 282

Codeforces Round #476 (Div. 2) [Thanks, Telegram!] 题解

A. Paper Airplanes 简单数学模拟题。 #include&lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; ll k,n,s,p; int main(){ scanf("%I64d%I64d%I64d%I64d",&amp;k,&amp;n,&amp;s,&amp;p); ll...

luoyuef的博客 539

4×V100部署Qwen3.8-Flash-Next:vLLM/GGUF实战

大模型本地部署的核心,是把参数量、量化精度、显存容量和推理框架放在同一张账本里算清楚。MoE 模型总参数量大但激活参数少,解码阶段更受显存带宽与 KV Cache 限制;通过 INT4/AWQ 或 GGUF 等 4-bit 量化可显著压缩权重占用,再结合 vLLM 张量并行、llama.cpp 分层切分提升多卡利用率。其技术价值在于让 V100 这类老架构 GPU 也能承载百亿级参数模型的私有化推理,并服务于 RAG 知识库、工作流 API、批量生成等场景。这次围绕 4×V100 32G 部署 Qwen3.

weixin_29061425的博客 344

Qoder Work vs Lobster AI:办公AI工具深度对比(2026年2月更新)

Qoder Work = 本地安全的“文件管家”Lobster AI = 混合智能的“办公全能助手”选择逻辑:隐私优先→选Qoder Work;效率优先→选Lobster AI。

lpfasd123的博客 1044
上一篇: Resource Distribution (思维+贪心好题)
下一篇: Vacations (DP)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值