Blask
好东西快到老王碗里来
Blask

IT节程序设计竞赛网络赛(三)

2月中旬举办了场代码比赛,拉几道我会写的题目来放放(出题人老二次元了)

题目I:防AK是简单知识点,这样的题目你喜欢吗?

题目详情:

苏铭同学是19级的一名新生,他进入北师珠学习已经一年了。他对木铎楼和励耘楼这两栋教学楼印象非常深刻,因为这是距离他的宿舍最近和最远的两栋楼。

因为苏铭同学非常懒,所以他经常乘坐电瓶车来回两栋教学楼之间。聪明的他想到了一个办法可以节约车费,他和司机大哥商量了一件事情:按照来回收费。假设从木铎楼坐到励耘楼为来,从励耘楼坐到木铎楼为回。计算去和回的次数,每次去和每次回共计一个来回,如果有多余的去和回也算作一个单独的来回。

苏铭同学非常热爱学习,每天晚上学累了都直接在教学楼睡觉。而且他每天最多坐一次电瓶车,也只在同一栋教学楼学习。如果两天都在同一栋教学楼学习就不用坐车了。第一天所在的教学楼为起点,不需要考虑从宿舍到教学楼的车费。

你作为苏铭同学的好朋友,请你帮他计算一下,他需要支付多少个来回的车费。

http://image.blask.cn/%E7%94%B5%E8%BD%A6%E9%97%AE%E9%A2%98.png
  • 输入要求
  • 先输入一个T,表示T组数据。
  • 每组数据第一行输入一个n(1≤n≤10000),表示有n天。
  • 每组数据第二行输入一个只包含大写“M”和“L”的字符串。
  • 输出苏铭同学需要支付的来回数。

题目分析:

直接计算ML的个数,ML及一个来回,一个M或者一个L即半个来回,得出结果四舍五入即可0.0

题目代码:

JAVA编写:

import java.util.ArrayList;
import java.util.Scanner;

public class Test {

	private static String key1 = "ML";
	private static String key2 = "LM";
	public static int test(String strings) {
		int num1 = 0;
		int num2 = 0;
		int num = 0;
		String temp = strings;
		while(strings.contains(key1)) {
			strings = strings.substring(strings.indexOf(key1) + key1.length());
			num1++;
		}
		while(temp.contains(key2)) {
			temp = temp.substring(temp.indexOf(key2) + key2.length());
			num2++;
		}
		num = num1+num2;
		return num;
	}
	
	public static void main(String[] args) {
		int num,length;
		String strings;
		Scanner input = new Scanner(System.in);
		num = input.nextInt();
		for(int i=0;i<num;i++) {
			length = input.nextInt();
			strings = input.next();
			System.out.println("Case #"+(i+1)+":");
			double ans = test(strings);
			ans = ans / 2;
			System.out.println((int)Math.round(ans));
		}
	}
}
没有标签
首页      开发      IT节程序设计竞赛网络赛(三)

发表评论

textsms
account_circle
email

Blask

IT节程序设计竞赛网络赛(三)
2月中旬举办了场代码比赛,拉几道我会写的题目来放放(出题人老二次元了) 题目I:防AK是简单知识点,这样的题目你喜欢吗? 题目详情: 苏铭同学是19级的一名新生,他进入北师珠…
扫描二维码继续阅读
2020-05-12