一、前言

由于转专业原因,原先专业没有进行C基础训练,需要进行OJ补课,于是记录一下刷OJ的过程,以加深巩固。

二、准备工作

  1. OJ是什么?

Online Judge System 即 在线评测系统(以下简称OJ),用户可以在线的提交程序源代码,OJ会对这些源代码进行编译和运行,并且通过每道题目预先设计的数据和时空限制等标准来检验用户程序的正确性。

  1. 一些常见测试模板
#include "iostream"
#include "string"

using namespace std;

// 输入n组数据
void test1(){
	int n;
	cin>>n;
	int i =0;
	while(i<n){
	
		
		i++;
	}	
} 

// 当输入data则进行测试 
void test2(){
	
	int data;
	while(scanf("d",&data)!=EOF){
		
	}

}


int main(){
	
	
	
	return 0;
} 

Java版:Java版输入模板

  1. 常见情况

参考:各类型结果说明

  1. 一般类型(个人理解)
    基础
    (1)数组循环
    (2)字符串处理(日期、单词统计)
    (3)枚举、模拟
    (4)递推迭代
    (5)STL的基本使用
    (6)树与图
    (7)数学,组合

参考:各大OJ类型
       算法
       (1)十大排序
       (2)查找搜索
       (3)分治策略
       (4)动态规划
       (5)贪心法、回溯

三、亲和数以及统计单词的实现

亲和数:

#include "iostream"
using namespace std;


// 判断是否为和亲数

bool judge(int num1,int num2){
	
	// 获取最大的数,以便保证最大的可以求得 
	int max = num1>num2?num1:num2;
    int sum1=0,sum2=0;

    for(int i = 1;i*i<max;i++){
    	
    	if(num1%i==0&&i*i<num1){
    		sum1+=i;
    		sum1+=(num1/i);
		}
		
		if(num2%i==0&&i*i<num2){
			sum2+=i;
			sum2+=(num2/i);
		}
	}
	
	
	sum1-=num1;
	sum2-=num2;
//	cout<<"num1:"<<num1<<"num2"<<num2;
	
	if(sum1==num2&&sum2==num1){
		cout<<"Yes"<<endl;
		return true;
	}	
	cout<<"No"<<endl;
	
	return false;
} 


int main(){
	
	int n;
	cin>>n;
	int i =0;
	
	while(i<n){
		
		int n1,n2;
		cin>>n1>>n2;
		judge(n1,n2); 	
		i++;
	}
	return 0;
}

本题就是简单的循环判断,但注意时间可以进行优化 i 小于平方根num即可,同时还可以进行双数进行同时遍历,只需遍历一趟。

在这里插入代#include"iostream"
using namespace std;


// 统计单词,string 如何使用 

// string 的使用 

int getNums(string str){
	
	int len  = str.length();//size()
	bool flag = false;
	 
	 int count=1;
	for(int i =0;i<len;i++)
	{
//		cout<<str[i]<<endl;
		if(str[i]==' '){//&&flag
		  
			flag=true;	// 当遇到空格时则说明有可能会多一个单词 
		}else if(flag){
			count++; // 当遇到字母时,且上一个字符为空格(flag为true说明) 
			flag=false;
		}
	 
	} 
	
	return count;
}

int main(){
	
	string str;
	
//	cin>>str;  //遇到空格则结束

  getline(cin,str); 

	
	cout<<getNums(str); 
	return 0;
} 码片

统计单词:注意输入的不同;

cin:遇到空格则视为输入结束。
getline:则需要\n才会结束。
关于读入带空格问题:cin、getline等输入对比

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐