首页 > 其他分享 >笔试中acm输入的自我总结

笔试中acm输入的自我总结

时间:2023-09-28 21:35:39浏览次数:48  
标签:cout int 笔试 自我 acm cin while num vec

参考笔记:ACM模式各种输入总结C++版 - 知乎 (zhihu.com)

之前觉得就是输入没那么难,但是做了好几个厂的笔试题,着实给我整不会了。所以赶紧亡羊补牢吧!!

总结一下:输入的长度大小一般是给定的,不给定大小的情况我个人感觉很少。而且对于输入的分隔符无非就两种“,”和“ ”;

所以代码中有一些用while进行cin输入的,完全可以用for替代。

代码:

//这个文件是总结acm各种情况的输入,建议记忆
#include "acmcin.h"
using namespace std;

//按照acm的题型分为处理数字型,和处理字符串型
//首先要知道cin只能将空格和table作为分隔符!!!

//处理数字型
//已知长度,且以空格分割
//一般已知长度是指在数据前面输入数据的基本信息
/**************输入*****************/
//			3 4
//			1 2 3
//			4 5 6
//			7 8 9
//			10 11 12
/**********************************/
void shuzi_kongge()
{
	int num = 0, len = 0;
	cin >> num;
	cin >> len;
	vector<vector<int>>arr(num, vector<int>(len));
	int temp = 0;
	for (int i = 0; i < num; i++)
	{
		for (int j = 0; j < len; j++)
		{
			cin >> arr[i][j];
			/*temp;
		arr[i].push_back(temp);*/
		}
	}

	cout << "输入如下" << endl;
	for (int i = 0; i < num; i++)
	{
		for (int j = 0; j < len; j++)
		{
			cout << arr[i][j] << "\t";
		}
		cout << endl;
	}
}

//已知长度,且以","分割
/**************输入*****************/
//	3
//	1,2,3,3,2
//	4,5,6,1,3
//	7,8,9,13,4
/**********************************/
void shuzi_douhao()
{
	/*int num = 0;
	cin >> num;
	vector<int, vector<int>>arr(num);
	string cur
		while()

	cout << "输入如下" << endl;*/
	int n;
	cin >> n;
	//vector<vector<int>> vec(n, vector<int>(5));
	vector<vector<int>> vec(n);
	for (int i = 0; i < n; ++i)
	{//注意这里一定要有i控制,用while容易一直输入导致错误
		string s;
		cin >> s;
		replace(s.begin(), s.end(), ',', ' ');

		/*cout << "测试" << endl;
		cout << s << endl;*/

		istringstream is(s);
		string tmp;

		//事先知道数组多长可以用for
		//for (int j = 0; j < 5; ++j)
		//{//内层循环也很重要
		//	is >> tmp;
		//	vec[i][j] = stoi(tmp);
		//}

		//事先不知道数组多长可以用while
		while (is >> tmp)
		{
			vec[i].push_back(stoi(tmp));
		}
	}

	//输出显示
	for (int i = 0; i < vec.size(); i++)
	{
		for (int j = 0; j < vec[0].size(); j++)
		{
			cout << "\t" << vec[i][j];
		}
		cout << endl;
	}

	//return 0;
}

/*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/
/*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/
/*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/

//未知长度,且以空格分割						//这个暂时有问题
/**************输入*****************/
//			1 2 3 3 2
//			4 5 6 1 3
//			7 8 9 13 4
/**********************************/

//这个由于未知长度,没法判断输入结束,需要知道其他更多的信息
void shuzi_kongge_weizhi()
{
	vector<int>vec;
	//vector<vector<int>>vec;
	string s;
	int num = 0, len = 0;
	int i = 0;
	bool flag = true; //记录一行的个数;

	while (cin >> num)
	{
		vec.push_back(num);
		if (flag)len++;

		if (getchar() == '\n')
		{
			if (flag)
				flag = false;

			continue;
		}
	}

	//输出显示
	for (int i = 0; i < vec.size(); i++)
	{
		cout << "\t" << vec[i];
		if ((i + 1) % len == 0)
			cout << endl;
	}
}

//未知长度,但是用","分割
/**************输入*****************/
//		1, 2, 3, 3, 2
//		4, 5, 6, 1, 3
//		7, 8, 9, 13, 4
/**********************************/
void shuzi_douhao_weizhi()
{
	string s;
	vector<int>vec;
	while (cin >> s)
	{
		replace(s.begin(), s.end(), ',', ' ');

		istringstream is(s);
		int temp = 0;
		string cur;
		cout << "转化结果" << endl;
		while (is >> cur)
		{
			vec.push_back(stoi(cur));
			cout << "\t" << stoi(cur);
		}
		cout << endl;
	}
}
/*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/
/*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/
/*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/

//处理字符串

//以空格分割
/*********************************输入**************************************/
// good good study day day up
/*********************************输入**************************************/

void str_kongge()
{
	vector<string>str;
	string s;
	while (cin >> s)
	{
		str.push_back(s);
		if (getchar() == '\n')
		{
			s.clear();
			break;
		}
	}
	//输出结果
	cout << "输出展示" << endl;
	for (auto st : str)
	{
		cout << st << " ";
	}
	cout << endl;
}
//用","分割
void str_douhao()
{
	vector<string>str;
	string s;
	//使用getline函数
	while (getline(cin, s))
	{
		stringstream input(s);
		//cout << input << endl;
		string s1;
		while (getline(input, s1, ','))
		{
			str.push_back(s1);
			/*if (getchar() == '\n')
				break;*/
			s1.clear();
		}

		/*replace(s.begin(), s.end(), ',', ' ');
		istringstream is(s);
		string temp;
		while (is >> temp) {
		}
		if (getchar() == '\n')
		{
			break;
		}*/
	}

	//输出结果
	cout << "输出展示" << endl;
	for (auto st : str)
	{
		cout << st << " ";
	}
	cout << endl;
}

  

 

标签:cout,int,笔试,自我,acm,cin,while,num,vec
From: https://www.cnblogs.com/rengongzz/p/17736522.html

相关文章

  • 华为认证 | 华为认证中国大陆笔试考试系统升级公告
    由于笔试考试系统升级,将会影响中国大陆区域2023年9月25日及之后的笔试考试预约,具体影响如下:1.2023年9月25日-27日预约/改期/取消笔试考试的考生,将会同时收到邮件和短信通知,9月28日07:00及之后预约/改期/取消笔试考试的考生将只能收到短信通知,预计12月31日前恢复发送邮件通知。2.9......
  • NLP经典论文,自我回顾笔记
    (持续更新,目前找工作中)1. SequencetoSequenceLearningwithNeuralNetworks(2014GoogleResearch)However,thefirstfewwordsinthesourcelanguagearenowveryclosetothefirstfewwordsinthetargetlanguage,sotheproblem’sminimaltime......
  • 基于Java的高校竞赛管理系统设计与实现(亮点:发起比赛、报名、审核、评委打分、获奖排名
    高校竞赛管理系统一、前言二、我的优势2.1自己的网站2.2自己的小程序(小蔡coding)2.3有保障的售后2.4福利三、开发环境与技术3.1MySQL数据库3.2Vue前端技术3.3SpringBoot框架3.4微信小程序四、功能设计4.1主要功能描述4.2系统角色五、系统主要功能展示5.1前端展示5.1.1......
  • 深信服笔试_拼接木材
    拼接木材现在有一批长度不同的木材woods,现在需要将木材进行拼接,正好达到总长度length,在不考虑切割木材,并且每种长度的木材不限量供应情况下,返回满足要求的最少木材数量,如果无法通过组合达到规定长度,则返回-1。输入描述木材长度列表和需要达到的总长度length木材种类:1<=l......
  • 自我介绍
    我叫丁凌烁,来自天津。 我的爱好是OGF普通生成函数,EGF指数型生成函数BGF伯努利生成函数PGF概率生成函数AGF代数生成函数CGF组合生成函数DGF迪利克雷生成函数FGF傅里叶生成函数GGF图论生成函数HGF华为生成函数IGF国际生成函数JGF江莉生成函数 KGF肯德基生成函数LGF......
  • 这篇文章用来记录面试/笔试中遇到的手撕题
    23.09.24本次笔试手撕题有如下:将一个32位整数按bit翻转,即0-311-302-29...思路:先取出每一位bitx0-15位,进行左移,每个左移(31-i)位31-16位,进行右移,每个右移(i)位反转一个字符串中的单词。整体反转,再找到对应的单词,left和right,然后反转单词两个有序链表合成一个。就是两个......
  • 自我介绍和博客介绍
    本人现2023级大一新生,高中时参加过oi,拿过CSP-S2020浙江省一等奖和NOIP提高组浙江省二等奖,高一退役,目前已经三年没碰代码。因为我目前的专业为生物工程,属于跟计算机搭不着边的关系,所以算是一个业余选手,目前还正在康复期。而之所以创立这个博客,也是想复习一下之前学过的算法内容,也顺......
  • 自我介绍
    102101407;我是周诗雨;我的爱好是小说、漫画、游戏等等不一而足,喜欢看有趣的故事!最近特别想看的是诡秘;福大食堂中最喜欢的一道菜是杨国富;最近最喜欢的一首歌是PriceTag;想说的一句话:每天早睡一刻钟轻松快乐做现充......
  • 自我介绍
    自我介绍102101408;我是翁舒晴;我的爱好是睡觉;推荐你福大食堂中最喜欢的一道菜:肯德基疯狂星期四;推荐你目前最喜欢的一首歌:可以摆烂喽;一句想说的话:希望可以戒掉睡觉这个爱好。......
  • 自我介绍
    自我介绍(软工第一次作业)Nicetomeetyou.学号:102101406;我是陈羚;我的爱好是小说、音乐、漫画;我在福大食堂中最喜欢的一道菜是渔家傲的菌菇肥牛饭(丁香园二层);目前最喜欢的一首歌是五月天的《仓颉》ヾ(◍°∇°◍)ノ゙;这首歌是一下就想到的,它的词很好;附上MV视频链接(因为音乐平......