英雄会上的一些题

《英雄编程体验课》第 02 课 | 开始刷题 02 函数 阅读详情

题1:平安科技在线编程大赛:一份“奇妙”的银行流水

“求评论”

题目详情

一份银行流水数据,因打印模糊导致部分金额不清楚。                  

收入、支出、余额满足以下3条规则:              

1、收入、支出、余额三列都是数字            

2、同一行收入和支出的值不能同时为非零值            

3、第N-1行余额(+第N行收入或-第N行支出)=第N行余额  

程序语言: java

请按照规则编写算法,修复不清楚的值


输入描述:

输入数据最多25行,每行都包含四个数据,分别是:数据编号,收入、支出、余额,模糊的数据以?表示,它们之间以;隔开。

以文件结尾。第一组数据为初始数据值,收入、支出、余额数据保留2位小数。 输入输出第一行均为表头“流水记录ID;收入;支出;余额”。

输出描述:

以输入的数据顺序输出修复后的数据。



答题说明

输入样例:

流水记录ID;收入;支出;余额

1;0.00;51.90;1945.45    

2;0.00;1000.00;?

输出样例:

流水记录ID;收入;支出;余额

1;0.00;51.90;1945.45

2;0.00;1000.00;945.45


import java.text.DecimalFormat;
import java.util.Scanner;
import java.util.Vector;


public class AmazingBank {
	public static void main(String[] args){
		Vector<Double[]> vector = new Vector<Double[]>();
		Scanner cin = new Scanner(System.in);
		String str = cin.next();
		while(cin.hasNext())
	    {  
			str = cin.next(); 
			if (str.equals("EOF")){
				break;
			}
			String[] strArr = str.split(";");
			Double[] tmp = new Double[3];
			for (int i = 1; i < 4; i++){
				if (strArr[i].equals("?")){
					tmp[i-1] = null;
				}else{
		 			tmp[i-1] = Double.parseDouble(strArr[i]);
		 		}
		 	}
			vector.add(tmp);
	    }
		cin.close();
		
		Vector<Double[]> ans = repairRecord(vector);
		
		DecimalFormat df = new DecimalFormat("#0.00");
		System.out.println("流水记录ID;收入;支出;余额");
		for (int i = 0; i < ans.size(); i++){
			System.out.print(""+(i+1)+";");
			Double[] tmp = ans.get(i);

			if (null != tmp[0])
				System.out.print(df.format(tmp[0])+";");
			else
				System.out.print("?;");
			if (null != tmp[1])
				System.out.print(df.format(tmp[1])+";");
			else
				System.out.print("?;");
			if (null != tmp[2])
				System.out.print(df.format(tmp[2])+"\n");
			else
				System.out.print("?\n");
		}
	}
	
	public static Vector<Double[]> repairRecord(Vector<Double[]> arr){
		int arr_len = arr.size();
		int i = 0;
		int max_while = arr_len * 3; //最坏情况的搜索次数
		int count = 0; 
		while(i < arr_len && count < max_while){
			Double[] xz_element = arr.get(i);
			if (null != xz_element[0]){
				if (0.0 < xz_element[0]){
					if (null == xz_element[1]){
						xz_element[1] = 0.0;
					}
				}
			}else{
				if (null != xz_element[1]){
					if (0.0 < xz_element[1]){
						xz_element[0] = 0.0;
					}
				}
			}

			if (null == xz_element[2] && 0 != i){
				Double[] qm_element = arr.get(i-1);
				if (null != qm_element[2] && null != xz_element[0] && null != xz_element[1]){
					xz_element[2] = qm_element[2] +xz_element[0]-xz_element[1];
				}
			}else{
				if (0 != i){
					Double[] qm_element = arr.get(i-1);
					if (null != qm_element[2]){
						double diff = xz_element[2] - qm_element[2];
						if (diff > 0){
							xz_element[0] = diff;
							xz_element[1] = 0.0;
						}else{
							xz_element[0] = 0.0;
							xz_element[1] = -diff;
						}
					}
				}
			}
			
			arr.remove(i);
			arr.add(i, xz_element);
			
			if (isElementOK(xz_element)){
				if (0 != i){
					Double[] qm_element = arr.get(i-1);
					if (!isElementOK(qm_element)) {
						qm_element[2] = xz_element[2] - xz_element[0] + xz_element[1];
						arr.remove(i-1);
						arr.add(i-1, qm_element);
						i--;
					}else{
						i++;
					}
				}else{
					i++;
				}
			}else{
				i++;
			}
			
			count++;
		}

		return arr;
	}
	
	// 判断一条记录是否完整
	private static boolean isElementOK(Double[] element){
		boolean ans = true;
		for (int i = 0; i < element.length; i++){
			if (null == element[i]){
				ans = false;
				break;
			}
		}
		
		return ans;
	}
}


【Verilog】valid-ready双向握手机制 ——很绕但是很有意思 valid-ready双向握手机制。 阅读详情

相关推荐

微磁模拟实战指南:从OOMMF安装到首个3D模型运行

本文详细介绍了OOMMF微磁模拟软件的安装与使用,从环境配置到首个3D模型运行的完整教程。涵盖Windows、Linux和macOS平台的安装避坑指南,以及MIF文件编写、并行计算优化等实战技巧,帮助研究人员快速掌握这一开源工具在磁畴壁运动、磁滞回线等微磁学问题中的应用。

weixin_29294597的博客 153

维特比算法[Wiki]

维特比算法 维特比算法(Viterbi algorithm)是一种动态规划算法。它用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。 术语“维特比路径”和“维特比算法”也被用于寻找观察结果最有可能解释相关的动态规划算法。例如在统计句法分析中动态规划算法可以被用于发现最可能的上下文无关的派生(解析)的字符串,有时被称为“维特比分析”

AimAtFuture的专栏 4109

Altium Designer20-柔性PCB绘制技巧

Altium Designer2020-柔性PCB绘制技巧 注:教程所用PCB随意找的,并没有完全绘制完,大家学习PCB折弯方法即可。 1.打开PCB,点击视图->板子规划模式1,如下图所示 2.点击设计->定义分割线,用两条分割线绘出要折弯的区域 3.点击设计->定义弯曲线(弯曲线呈现黄色) 4.用快捷键d,k进入layer manage stack(层叠管理器),在f...

weixin_44450279的博客 1万+

待解决的英雄会上的一些题

AB串 返回首页 发布公司: 有 效 期: 优快云 2014-05-29至2015-05-29 难 度 等 级: 答 题 时 长: 编程语言要求: 120分钟 C C++ Java C# 题目详情 给定n个A和2n个B,用这些字符拼成一个字符串,要求这个串的所有前缀和后缀B的个数始终不少于A。 (一个字符串

AimAtFuture的专栏 903

AXI4-Stream FIFO IP核实战指南——从配置到跨时钟域处理

本文是AXI4-Stream FIFO IP核的实战指南,详细讲解了其作为数据流缓冲核心的作用。文章重点涵盖从Vivado环境下的IP核配置、关键参数(如深度与宽度)设定,到跨时钟域处理的完整流程。深入解析了TVALID/TREADY握手协议及TLAST等信号,并提供了常见问题排查与调试技巧,帮助开发者高效实现FPGA/SoC系统中可靠的数据流缓冲与同步。

weixin_29251567的博客 480

宝塔面板 python管理器2.0安装Mrdoc

自从python管理器从1.9升级2.0后,导致原教程不能使用。 故关于2.0新开教程如下。 关于python管理器2.0 最大的区别在于: python管理器2.0不再需要进入虚拟环境,直接在当前环境进行操作,但是需要指定python路径及pip路径。 1、新建mrdoc工程目录,下载源码: 新建目录【mrdoc】,进入mrdoc目录,并在宝塔ssh或或远程ssh中执行 ,下载源码 git clone https://gitee.com/yang_lite/MrDoc.git .

debj031634的专栏 5991

优快云英雄会上会英雄

4月6日参加了优快云的英雄会,这是优快云精心组织的一次网友及业内专家的聚会,声势颇为浩大。早早到达会场,首先遇到的是ITPUB的叶开同学,叶开是咨询顾问,给了我很多有益的建议,包括写作及出版,他的建议使我下定决心再写一本书,面向另外一个细分读者市场。晚一点,见到了Fenng,他来北京是带着一堆任务来的,据说还要托运东西回杭州,真是够忙的:),不过拿一本我的书的愿望是顺利完成了:)F

eygle's life 5087

5、Raspberry Pi CPU架构与多线程编程详解

本文详细介绍了Raspberry Pi的CPU架构(包括ARMv6Z、ARMv7-A和ARMv8-A),通过/proc/cpuinfo解析硬件信息,并深入探讨了多线程编程的核心技术。内容涵盖pthread库的使用,如线程创建、属性设置、等待与分离、线程同步机制(互斥锁),以及实际应用场景如多媒体处理和网络服务。同时强调了线程安全、死锁预防和资源管理等关键注意事项,帮助开发者在Raspberry Pi上构建高效稳定的多线程应用。

sre5engineer的博客 94

万人千题 | 九日集训 | 英雄算法联盟合伙人 | 三年之约 | B站直播早起粉丝团

万人千题

英雄哪里出来 9602

100天精通Python(可视化篇)——第98天:Pyecharts绘制多种炫酷日历图参数说明+代码实战

一、日历图介绍 二、基础配置 1. 配置项类 2. 添加函数 3. 日期标签配置 4. 坐标系配置 三、日历图实战 1. 基础日历图 2. 日历热图

努力让自己发光,对的人才能迎着光而来 2万+

别再瞎改网络结构了!解决YOLO小目标检测痛点,我用这招把mAP提了15%

本文基于我7年工业PCB缺陷检测、无人机航拍、安防监控项目的一线落地经验,针对YOLO小目标检测最痛的「漏检率高、特征丢失、精度难提升」三大核心问题,拆解出。本文全程配套小目标特征丢失原理图、分块训练流程图、切图前后效果对比图、mAP提升柱状图、多方案性能对比表等可视化内容,从YOLO天生不擅长小目标的底层根源、方案核心原理、可直接复制的代码实现,到工业场景实测验证、新手必踩的10个坑位避坑指南,全链路讲透。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 387

30行代码爬取英雄联盟全英雄皮肤

距离上次写爬虫文章已经过了许久了,之前写过一篇20行Python代码爬取王者荣耀全英雄皮肤 ,反响强烈,其中有很多同学希望我再写一篇针对英雄联盟官网的皮肤爬取,但苦于事情繁多,便一拖再拖,一直拖到了现在,那么本篇文章我们就一起来学习一下如何爬取英雄联盟全英雄皮肤。 爬取代码非常简单,从上到下可能只需要写30行左右就能完成,但重要的是分析过程,在此之前,我们先来了解一下本篇文章需要用到的模块。 requests模块介绍 首先是requests模块,这是一个模拟浏览器请求的模块,我们可以通过它来获取网页上的信息

。。。 2万+

VisionPro 机器视觉案例 之 硬币识别

CogPMAlignTool模板匹配工具 掩模

机器视觉李小白的博客 1892

Python | 用Python爬取LOL所有的英雄信息以及英雄皮肤

使用Python爬取英雄联盟所有的英雄信息以及英雄皮肤,简单几行代码即可实现爬虫

杰森写代码 4086

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

英雄联盟英雄信息【python爬虫】

Python爬虫实战对LOL的英雄信息抓取。什么是ajax数据爬取:通常我们在requests抓取页面的时候,得到的html源码可能和在浏览器中看到的不一样,在页面上则可以看到数据,这是因为数据是听过ajax异步加载的,原始页面不会包含某些数据,原始页面加载完之后,会向服务区请求某个接口获取数据,然后数据才会被呈现在页面上,这其实就是发送了一个ajax请求。

flyskymood的博客 2503

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python爬取英雄联盟手游的全英雄皮肤 初识selenium

python爬取英雄联盟手游的全英雄皮肤前言分析页面 前言 近期这个鸽了好久的英雄联盟手游终于上线了,虽然博主不是英雄联盟端游玩家,但看到这个游戏上线还是超级开心的,受到了一些博主爬王者荣耀皮肤的启发,我们来试试爬英雄联盟的皮肤图片吧。 分析页面 来到英雄联盟手游的官网,我们来看看这个英雄列表的展示形式吧 ...

就很有趣的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【C语言】英雄联盟英雄查询系统(源码)

【C语言】英雄联盟英雄查询系统 模拟模拟~~~ 程序介绍:【C语言】英雄联盟英雄查询系统 /*---------------------------------- project :英雄联盟英雄查询系统 author : LLZ tool man: xy finish : 2019/12/26 ----------------------------------*/ /*----------------------------- ⊙注意事项!!!! 为了用C语言实现文件的读写 程序读取数据

404name的博客 4477

python爬虫入门之爬取英雄联盟官网的所有英雄数据

本文是Python学期实训时所写的爬虫项目,在这里分享给你,希望能对你有所帮助。 文章目录   爬虫目的分析      网页内容介绍 网页内容介绍   英雄联盟官方网址:  英雄联盟全新官方网站-腾讯游戏   英雄数据信息网址: https://lol.qq.com/data/info-heros.shtml 如果觉得本文写的还不错的话,求赞、求收藏、求关注、求转发、最重要的是给小博主点个大大的订阅,你的鼓励就是我前进的最大动力,我们下期再见。 ...

qq_46127034的博客 1万+

Python爬英雄联盟lol全英雄皮肤

先看效果展示: 上代码xxx.py # 1.导入所需模块 import requests import os # 创建lol文件夹 #os.mkdir("lol") # 2.读取js文件,获取英雄id(hero_id) url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js' headers = {'U...

臭小子的博客 4614
上一篇: 发表在 Science 上的一种新聚类算法
下一篇: 英雄会上的一些题
Jun-H
博客等级 码龄16年 123粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jun-H

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值