当前位置: 首页 > article >正文

ACM输入输出模板(下)【Java、C++版】

文章目录

  • 16、多组测试数据,每组测试数据的第一行为整数N(1<=N<=100),当N=0时,输入结束,第二行为N个正整数以空格隔开,输出结果为字符串。
    • C++
    • Java
  • 17、多组测试数据,每行为n+1个数字,输出链表或对应的字符串。
    • C++
    • Java
  • 18、多组输入,每组输入包含两个字符串,输出字符串。
    • C++
    • Java
  • 19、多组测试数据。每组输入占一行,为两个字符串,由若干个空格分隔。
    • C++
    • Java
  • 20、多组测试数据,每组第一行为两个正整数n和m,接下来m行,每行3个整数, 最后一行两个整数。
    • C++
    • Java

16、多组测试数据,每组测试数据的第一行为整数N(1<=N<=100),当N=0时,输入结束,第二行为N个正整数以空格隔开,输出结果为字符串。

C++

#include<iostream>
#include<stack>
#include<vector>
using namespace std;
int main() {
	int n;
	int nums[105];
	while(cin >> n) {
		// 结束输⼊
		if (n == 0) break;
		for (int index = 0; index < n; index++) cin >> nums[index]; // 输⼊数组
		stack<int> st;
		int index = 0;
	
		// 输出字符串
		if (st.empty() && index == n) cout << "Yes" << endl;
		else cout << "No" << endl;
    }
}

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		String str = null;
		while((str = reader.readLine())!= null){
			StringTokenizer tokenizer = new StringTokenizer(str);
			// 读取n
			int n = Integer.parseInt(tokenizer.nextToken());
			if(n == 0){
				break;
            }
			int[] arr = new int[n];
			tokenizer = new StringTokenizer(reader.readLine());
			// 读取n个正整数
			for(int i = 0; i < n; i++){
				arr[i] = Integer.parseInt(tokenizer.nextToken());
            }
			if(check(arr)){
				System.out.println("Yes");
            }else{
				System.out.println("No");
            }
        }
    }
}

17、多组测试数据,每行为n+1个数字,输出链表或对应的字符串。

C++

int main() {
	int n, m;
	LinkedNode* dummyHead =  new LinkedNode(0); // 这⾥定义的头结点 是⼀个虚拟头结点,⽽不是真正的链表头结点
	while (cin >> n) {
		if (n == 0) {
			cout << "list is empty" << endl;
			continue;
        }
		LinkedNode* cur = dummyHead;
		// 读取输⼊构建链表
		while (n--) {
			cin >> m;
			LinkedNode* newNode = new LinkedNode(m); // 开始构造节点
			cur->next = newNode;
			cur = cur->next;
        }
		printLinkedList(dummyHead->next);
		printLinkedList(reverseList(dummyHead->next));
    }
}
//输出链表
void printLinkedList(LinkedNode* head) {
	LinkedNode* cur = head;
	while (cur != nullptr) {
		cout << cur->val << " ";
		cur = cur->next;
    }
	cout << endl;
}

Java

import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNextLine()) {
			String[] str = sc.nextLine().split(" ");
			if (Integer.parseInt(str[0]) == 0) {
				System.out.println("list is empty");
            }
			ListNode dummyhead = new ListNode(-1);
			ListNode cur = dummyhead;
			//构造链表
			for (int i = 1; i < str.length; i++) {
				ListNode temp = new ListNode(Integer.parseInt(str[i]));
				cur.next = temp;
				cur = cur.next;
				if (i == str.length - 1) cur.next = null;
            }
			//输出原链表
			ListNode pointer = dummyhead.next;
			while (pointer != null) {
				System.out.print(pointer.val + " ");
				pointer = pointer.next;
            }
			System.out.println();
        }
    }
}

18、多组输入,每组输入包含两个字符串,输出字符串。

C++

int main() {
	string s;
	while (getline(cin, s)) { // 接受⼀整⾏字符串
		string preorder = "", inorder = "";
		// 拆分出两个字符串
		int i;
		for (i = 0; s[i] != ' '; i++) preorder += s[i];
		i++;
		for (; i < s.size(); i++) inorder += s[i];
		
		// 开始构造⼆叉树
		TreeNode* root = buildTree(preorder, inorder);
		// 输出后序遍历结果
		postorderTraversal(root);
		cout << endl;
    }
	return 0;
}
// 后序遍历⼆叉树
void postorderTraversal(TreeNode* root) {
	if (root == nullptr) {
		return;
    }
	postorderTraversal(root->left);
	postorderTraversal(root->right);
	cout << root->val;
}

Java

import java.util.Scanner;
public class Main{
public static Map<Character, Integer> map = new HashMap();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNextLine()) {
			String s = sc.nextLine();
			String[] ss = s.split(" ");
			String pre = ss[0];
			String in = ss[1];
			// 构建⼆叉树
			TreeNode res = afterHelper(pre.toCharArray(), in.toCharArray());
			//打印⼆叉树
			printTree(res);
			System.out.println();
        }
	}
	public static void printTree(TreeNode root) {
		if (root == null) return;
		printTree(root.left);
		printTree(root.right);
		System.out.print(root.val);
	}
}

19、多组测试数据。每组输入占一行,为两个字符串,由若干个空格分隔。

C++

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
	string text1, text2;
	while (cin >> text1 >> text2) {
		// 初始化dp数组
		vector<vector<int>> dp(text1.size() + 1, vector<int>(text2.size() + 1, 0));
		// 输出结果
		cout << dp[text1.size()][text2.size()] << endl;
	}
	return 0;
}

Java

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNextLine()) {
			String line = scanner.nextLine();
			String[] s = line.split(" ");
			String x = s[0];
			String y = s[1];
			int m = x.length();
			int n = y.length();
			// 初始化dp数组
			int[][] dp = new int[m + 1][n + 1];
			//...
			// 输出
			int max = dp[m][n];
			System.out.println(max);
        }
    }
}

20、多组测试数据,每组第一行为两个正整数n和m,接下来m行,每行3个整数, 最后一行两个整数。

C++

int main() {
	int n, m;
	while (cin >> n >> m) {
		// 构建图
		while (m--) {
			int a, b, l;
			cin >> a >> b >> l
		}
		int x, y;
		cin >> x >> y;
    }
	return 0;
}

Java

import java.util.Arrays;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNext()) {
			//  处理输⼊
			int n = scanner.nextInt();
			int m = scanner.nextInt();
			for (int i = 0; i < m; i++) {
				int a = scanner.nextInt();
				int b = scanner.nextInt();
				int l = scanner.nextInt();
            }
			int x = scanner.nextInt();
			int y = scanner.nextInt();
			
			// 处理输出
			int res = dfs(graph, x, y, isVisit, sum);
			if (res != Integer.MAX_VALUE) {
				System.out.println(res);
            } else {
				System.out.println("No path");
			}
      	}
    }
	private static int dfs(int[][] graph, int start, int end, int[] isVisit, int sum) {
		if (end == start) {
			return sum;
       	}
		return min;
    }
}

http://www.kler.cn/a/417115.html

相关文章:

  • 不修改内核镜像的情况下,使用内核模块实现高效监控调度时延
  • RuoYi排序
  • 中科亿海微SoM模组——波控处理软硬一体解决方案
  • Java设计模式 —— 【创建型模式】工厂模式(简单工厂、工厂方法模式、抽象工厂)详解
  • C++实现网格交易的例子
  • Mac安装及合规无限使用Beyond Compare
  • 【论文笔记】Towards Online Continuous Sign Language Recognition and Translation
  • 【JAVA进阶篇教学】第二十篇:如何高效处理List集合数据及明细数据
  • 刷LeetCode hot100--1.哈希表
  • 【系统架构设计师】高分论文:论信息系统的安全与保密设计
  • 智能化图书馆导航系统方案之系统架构与核心功能设计
  • 总结贴:Servlet过滤器、MVC拦截器
  • 安装MySQL 5.7 亲测有效
  • Android开发仿qq详情下拉头像变大
  • 力扣215:数组中第K大的元素
  • 聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透
  • Ozone的元数据系统架构演进和优化
  • hint: Updates were rejected because the tip of your current branch is behind!
  • 小程序跳转到本页面并传参
  • 【Zookeeper】三,Zookeeper的安装与基本操作
  • 40分钟学 Go 语言高并发:pprof性能分析工具详解
  • Pytest框架学习18--conftest.py
  • Java 虚拟机:承载 Java 生态的神奇魔盒
  • AWS CLI 操作指南
  • 腾讯阅文集团Java后端开发面试题及参考答案
  • Redis和MySQL保持一致性的延迟双删(Delay Double Delete)策略