IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> CCF CSP 201912-2 回收站选址 100分 -> 正文阅读

[C++知识库]CCF CSP 201912-2 回收站选址 100分

?

#include<iostream>
#include<map>   //map中键值对的构造需要引入pair,因此包含utility头文件 
int score[5]; //记录不同分数的选址个数,例如score[0]表示0分选址的个数 
using namespace std;

int main(){
	int n;
	scanf("%d",&n); //输入垃圾点个数 
	pair<int,int> p[n+1]; //存放垃圾点对应的坐标
	map<pair<int,int>,bool> m;  //将垃圾点标记为true,用map绑定 
	for(int i=1;i<=n;i++){ //循环输入垃圾点 
		int x,y;
		scanf("%d%d",&x,&y); //输入垃圾点坐标 
		p[i].first = x;  
		p[i].second = y;
		m[p[i]] = true;  //将该垃圾点标记为true 
	}
	for(int i=1;i<=n;i++){//从第一个垃圾点开始检测 
		//垃圾点(x,y)的上、左、下、右处的坐标的x和y值 
		int upper_x = p[i].first;
		int upper_y = p[i].second-1;
		int down_x = p[i].first;
		int down_y = p[i].second+1;
		int left_x = p[i].first-1;
		int left_y = p[i].second;
		int right_x = p[i].first+1;
		int right_y = p[i].second;
		//垃圾点(x,y)的上、左、下、右处的坐标 
		pair<int,int> upper = make_pair(upper_x,upper_y);
		pair<int,int> down = make_pair(down_x,down_y);
		pair<int,int> left = make_pair(left_x,left_y);
		pair<int,int> right = make_pair(right_x,right_y); 
		//判断是否符合选址的条件 
		if(m[upper]&&m[down]&&m[left]&&m[right]){
			//符合选址的条件后,再判断该选址(x,y)的分数
			//成为选址的垃圾点(x,y)的四个对角线位置的坐标的x,y值 
			//lu左上,ld左下,ru右上,rd右下
			int lu_x = p[i].first -1;
			int lu_y = p[i].second -1;
			int ld_x = p[i].first -1;
			int ld_y = p[i].second +1;
			int ru_x = p[i].first +1;
			int ru_y = p[i].second -1;
			int rd_x = p[i].first+1;
			int rd_y = p[i].second+1;
			//lu左上,ld左下,ru右上,rd右下
			pair<int,int> lu = make_pair(lu_x,lu_y);
			pair<int,int> ld = make_pair(ld_x,ld_y);
			pair<int,int> ru = make_pair(ru_x,ru_y);
			pair<int,int> rd = make_pair(rd_x,rd_y);
			//开始统计垃圾点(x,y)的得分 
			int count = 0;
			if(m[lu]){  //左上位置的垃圾点是否标记为true 
				count++;
			}
			if(m[ld]){//左下位置的垃圾点是否标记为true
				count++;
			}
			if(m[ru]){//右上位置的垃圾点是否标记为true
				count++;
			}
			if(m[rd]){//右下位置的垃圾点是否标记为true
				count++;
			}
			//每比较完一个符合条件的选址,将对应得分为count的选址个数加1 
			score[count]++;
		}
	}
	//循环输出得分为0、1、2、3、4 的回收站选址的个数 
	for(int i=0;i<=4;i++)
		cout<<score[i]<<endl;
	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:30:30  更:2022-03-21 20:34:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:59:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码