[编程题] 扫描透镜(本题还涉及如何从字符串中提取数字)
在N*M的草地上,提莫种了K个蘑菇,蘑菇爆炸的威力极大,兰博不想贸然去闯,而且蘑菇是隐形的.只 有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,买了2个扫描透镜,一个 扫描透镜可以扫描出(3*3)方格中所有的蘑菇,然后兰博就可以清理掉一些隐形的蘑菇. 问:兰博最多可以清理多少个蘑菇?
输入描述:
第一行三个整数:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小; 接下来K行,每行两个整数x,y(1≤x≤N,1≤y≤M).代表(x,y)处提莫种了一个蘑菇. 一个方格可以种无穷个蘑菇.
输出描述:
输出一行,在这一行输出一个整数,代表兰博最多可以清理多少个蘑菇. java
![](/assets/blank.gif)
![](/assets/blank.gif)
1 import java.util.Scanner; 2 import java.util.regex.Matcher; 3 import java.util.regex.Pattern; 4 public class ex3{ 5 ex3(){} 6 public static void main(String[] argvs){ 7 Scanner scanner = new Scanner(System.in); 8 String str = scanner.nextLine(); 9 10 //从字符串中提取数字 11 String regEx = "\\d{1,}"; 12 Pattern p = Pattern.compile(regEx); 13 Matcher m = p.matcher(str); 14 int iii = -1; 15 int[] t = new int[3]; 16 while(m.find()){ 17 iii++; 18 if(iii>2) 19 break; 20 t[iii] =new Integer(m.group()).intValue(); 21 } 22 int N =t[0]; 23 int M =t[1]; 24 int K =t[2]; 25 int x,y; 26 int[][] map = new int[N+1][M+1]; 27 for(int i=0;i<K;i++){ 28 str = scanner.nextLine(); 29 m = p.matcher(str); 30 iii = -1; 31 while(m.find()){ 32 iii++; 33 if(iii>1) 34 break; 35 t[iii] =new Integer(m.group()).intValue(); 36 } 37 x = t[0]; 38 y = t[1]; 39 map[x][y] = 1; 40 } 41 int[][] book = new int[N+1][M+1]; 42 int max = 0; 43 int s1,s2; 44 for(int i=1;i<N-1;i++){ 45 for(int j=2;j<M;j++){ 46 s1 = 0; 47 for(int k=-1;k<2;k++){//第一个镜子扫描 48 for(int l = -1 ; l < 2 ; l++){ 49 s1 += map[i+k][j+l]; 50 book[i+k][j+l] = -2; 51 } 52 } 53 for(int ii = 1 ; ii < N-1 ; ii++){ 54 for(int jj = 2 ; jj < M ;jj++){ 55 if(ii != i || jj != j){ 56 s2 = 0; 57 for(int k = -1 ; k < 2 ; k++){ 58 for(int l = -1 ;l < 2 ;l++){ 59 if(book[ii+k][jj+l] == 0){ 60 s2 += map[ii+k][jj+l]; 61 } 62 } 63 } 64 if((s1 + s2) > max){ 65 max = s1 + s2; 66 } 67 } 68 } 69 } 70 for(int k=-1;k<2;k++){//第一个镜子扫描book复原 71 for(int l = -1 ; l < 2 ; l++){ 72 book[i+k][j+l] = 0; 73 } 74 } 75 } 76 } 77 System.out.println(max); 78 return; 79 } 80 }
View Code
python
![](/assets/blank.gif)
![](/assets/blank.gif)
#-*- coding:utf-8 -*- str = raw_input() li = str.split(' ') M = li[0] N = li[1] K = li[2] M,N,K = int(M),int(N),int(K)map = [i for i in range(M*N+1)] book = [i for i in range(M*N+1)] for i in range(0,N):for j in range(1,M+1):map[i*M+j] = 0for i in range(K):str = raw_input()li = str.split(' ')x,y = li[0],li[1]x,y = int(x),int(y)map[(x-1)*M+y] = 1 for i in range(1,M*N+1):book[i] = -1max = 0 for i in range(1,N-1):for j in range(2,M):s1 = 0for k in range(-1,2):#第一个镜子扫描for l in range(-1,2):s1 += map[(i+k)*M+j+l]book[(i+k)*M+j+l] = -2 #表示访问过for ii in range(1,N-1):for jj in range(2,M):if ii*M+jj != i*M + j:s2 = 0for k in range(-1,2):#第二个镜子扫描for l in range(-1,2):if book[(ii+k)*M+jj+l] == -1:s2 += map[(ii+k)*M+jj+l]if s1 + s2 > max:max = s1 + s2for t in range(1,M*N+1):book[t] = -1print 'max:',max
View Code
转载于:https://www.cnblogs.com/yuanzhenliu/p/5265282.html
[编程题] 扫描透镜(本题还涉及如何从字符串中提取数字)相关推荐
- java数字编程提,java从字符串中提取数字的简单实例
随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们怎么把其中的数字提取出来呢?大致有以下几种方法, ...
- python编程输入数字输出月份英文_编程题:输入英文月份单词,输出对应月的数字形式。...
编程题:输入英文月份单词,输出对应月的数字形式. #include #include int search(char list[][20],char name[],int m) { int i; fo ...
- c语言从键盘输入数字月份,打印显示相应的英文单词月份,编程题:输入英文月份单词,输出对应月的数字形式。...
编程题:输入英文月份单词,输出对应月的数字形式. #include #include int search(char list[][20],char name[],int m) { int i; fo ...
- 趣味编程:从字符串中提取信息
字符串解析是程序员工作中非常重要的一部分,也是非常考验编程能力的工作.基本上我在面试程序员的时候,一定会出一道编程题目作为考察的一方面,而这道题目有很大的可能性是做字符串的解析.例如,给出一个模式规则 ...
- 趣味编程:从字符串中提取信息(参考答案 - 上)
这次"趣味编程"的目的是解析字符串,从一个指定模式的字符串中提取信息.对于目前这个问题,解决方案有很多种,例如直接拆分,使用正则表达式,或是如现在本文这般按照顺序解析.总结果上来说 ...
- 本题要求实现一个统计整数中指定数字的个数的简单函数。
本题要求实现一个统计整数中指定数字的个数的简单函数. 函数接口定义: int CountDigit( int number, int digit ); 其中number是不超过长整型的整数,digit ...
- LabVIEW2020 使用“扫描字符串”函数将字符串中的数字转换为十进制数值
目录 一.案例 二.前面板 三.程序框图 四.验证 一.案例 想把数值输入控件中的数字转换成字符串. 例如:字符串输入控件输入30,想转换成十进制数值30. 二.前面板 1.在前面板窗口上添加一个字符 ...
- pta编程题python答案提交显示非零返回_PTA中提交Python3程序的一些套路
0. FAQ whileTrue: raw=input()if raw == '':break print(sum(map(int, raw.split()))) 0.1 提交后提示"答案错 ...
- 趣味编程:从字符串中提取信息(参考答案 - 下)
昨天我们观察了如何使用基于状态机的顺序解析方式来提取字符串中的信息,不过由于winter-cn的做法和我原始的想法不谋而合,但实现的更为清晰,因此我在不献丑的同时,又设法使用另外一种方式来解决这个问题 ...
最新文章
- 三同轴连接器_罗森伯格射频同轴连接器之板间连接器三
- Linux之 xstart调用 x11vnc远程图形化桌面
- NanoPi NEO Air使用十二:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V
- 构建之法第三章软件工程师的成长
- Python 线程队列 LifoQueue – LIFO - Python零基础入门教程
- python统计元音总数_python – 元音序列计数
- 董明珠为什么做不好手机?
- Polylink 智能话机之—— e-talk 2200
- [转载] python numpy 笔记(一)
- 大背景在网页设计中应用的30个优秀案例
- 最好用的 7 款 Vue 3 富文本编辑器
- 数据结构:zyf树/毒瘤树
- linux下 查看 光模块信息,HPE品牌SFP光模块信息检查办法
- [吴道长作品]记一次不成熟的爬虫
- 遇到问题---linux--crontab输出重定向不生效最全可能原因收集和解决
- Windows 10与微软公有云Azure
- [量化-034]金融哲学-道德经解读-005-“道”是什么
- (信贷风控九)行为评分卡模型python实现
- Toronto Research Chemicals丨艾美捷 A因子分析
- 《精妙的IT》免费公开课