求大佬看看,测试数据全对,但全WA
查看原帖
求大佬看看,测试数据全对,但全WA
1024853
sana_37楼主2024/1/22 11:36
#include<iostream>
using namespace std;
#include<string>
#include<string.h>
int opt[100000];

int arr_to_int(string str, int l, int r) {

	int ans = 0;
	for (int i = l; i < r; i++) {
		ans = ans * 10 + (str[i] - '0');
	}
	
	return ans;
}
int main() {
	int n;
	cin >> n;

	string* arr = new string[n];
	
	char c;
	while ((c=cin.get()) == '\n') {//防止多次换行
		continue;
	}
	
	for (int i = 0; i < n; i++) {
		
		getline(cin, arr[i]);
		
     //将c 拼接到字符串的头部
		arr[i] = c + arr[i];
		
		if (i == n - 1)break;//输入结束则退出
		while ((c = cin.get()) == '\n') {
			continue;//防止输入字符串间的多次换行
		}

	}
	
	int min, max;//记录区间长度
	min = 1e6;
	max = -1;
	int temp;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < arr[i].size();) {
			while (j < arr[i].size()&& arr[i][j] == ' ')j++;//找到第一个不为0的字符
			
			temp = j;
			while (j < arr[i].size() && arr[i][j] != ' ') {
				j++;//算出整数的区间
			}
			if (j < arr[i].size() ) {
				int num = arr_to_int(arr[i], temp, j);
				if (num < min) {
					min = num;
				}
				if (num > max)max = num;
				opt[num]++;
				
			}
			else if (j >= arr[i].size() ) {
				int num = arr_to_int(arr[i], temp, arr[i].size());
				if (num < min) {
					min = num;
				}
				if (num > max)max = num;
				opt[num]++;
				
			}
			
		}
	}
	int repet;//重复数
	for (int i = min; i <= max; i++) {//遍历区间
		if (opt[i] > 1)repet = i;
		if (opt[i] < 1)temp = i;
	}

	cout << temp << ' ' << repet;
	return 0;
}
2024/1/22 11:36
加载中...