1597 BOX (UVA)
目录
思路:
代码实现:
学习到的东西:
思路:
6 个矩形能够拼成一个长方体,则它的边的长度可能有三种:
有 3 种边长:一般的长方体
有 2 种边长:底面为正方形的长方体
有 1 种边长:正方体
代码实现:
最开始写的:
#include<stdio.h>
#include<string.h>
int s[10005][10005];int main(){int a,b;while(scanf("%d %d",&a,&b)!=EOF){memset(s,0,sizeof(s)); //二维数组的初始化int cnt=0;//统计个数①if(a>b){s[b][a]++;}else{s[a][b]++;}//统计个数②for(int i=0;i<5;i++){scanf("%d %d",&a,&b);if(a>b){s[b][a]++;if(s[b][a]==2) cnt++;if(s[b][a]==4) cnt+=4;if(s[b][a]==6&&a==b) cnt=6;}else{s[a][b]++;if(s[a][b]==2) cnt++;if(s[a][b]==4) cnt+=4;if(s[a][b]==6&&a==b) cnt=6;}}//输出结果if(cnt==3||cnt==6) printf("POSSIBLE\n");else printf("IMPOSSIBLE\n");}return 0;
}
提交显示答案错误,但是我所有的情况都考虑了啊?!!
其实,我虽然考虑了所有情况,但没有去考虑它的数学性质
当输入的数据为:
6666 4444
6666 4444
1234 4321
1234 4321
1234 4321
1234 4321
明显不能构成长方体,但是我的程序给的是possile
重新写了一次,利用指针变量对函数进行了优化,原理如下
一定要注意以下几点:
int *pa也可以写成int* pa
pa的值是存放的地址,*pa的值是它所存放的地址存放的值
int *pa=&a不是说*pa=&a,而是pa=&a
*pa=*pb的意思是,在不改变地址的情况下,让pa这个地址指向的值等于pb指向的值
#include<stdio.h>
//利用指针,写一个对两个数排序的函数,使大的在前,小的在后
int max(int *pa,int *pb)
{int t;if(*pa<*pb){t=*pa;*pa=*pb;*pb=t;}
}int main()
{int a,b;scanf("%d %d",&a,&b);max(&a,&b);printf("%d %d",a,b);return 0;
}
AC码
#include<iostream>
#include<string.h>
using namespace std;
int max(int *pa,int *pb);
int s[10005][10005];
int main()
{int a,b;while(scanf("%d %d",&a,&b)!=EOF){int cnt=0; //cnt用来判断是否能够构成长方形int k=0,c[10005]; //用这两个东西用来统计边的种类memset(c,0,sizeof(c));memset(s,0,sizeof(s));//对第一次输入进行处理max(&a,&b);if(c[a]==0) { k++; c[a]++; }if(c[b]==0) { k++; c[b]++; }s[a][b]++;//对接下来的输入进行处理for(int i=0;i<5;i++){scanf("%d %d",&a,&b);max(&a,&b);if(c[a]==0) { k++; c[a]++; }if(c[b]==0) { k++; c[b]++; }s[a][b]++;//对每组长和宽进行统计if(s[a][b]==2) cnt++;if(s[a][b]==4) cnt+=4;if(s[a][b]==6&&a==b) cnt=6;}//输出if((cnt==3||cnt==6)&&k<4) printf("POSSIBLE\n");else printf("IMPOSSIBLE\n");}return 0;
}int max(int *pa,int *pb)
{int t;if(*pa<*pb) { t=*pa; *pa=*pb; *pb=t; }return 0;
}
学习到的东西:
为什么大数组要定义在main函数外
怎样初始化二维数组
1597 BOX (UVA)相关推荐
- windows下安装virtual box(ubuntu)
由于自己安装时出现了很多的问题,特意Mark一下. 第一步:在BIOS里是开启虚拟化(参考网上教程的)https://zhidao.baidu.com/question/189475236398171 ...
- #1135 : Magic Box(枚举)
#1135 : Magic Box 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 The circus clown Sunny has a magic box. Whe ...
- (UVA)1586 --Molar Mass(分子量)
题目链接:http://vjudge.net/problem/UVA-1586 思路:统计一个分子式中CHON出现的总次数,乘上相对原子量后求和.要注意的是CH4这样的C后面的1默认不出现,以及C4H ...
- 干货 | 目标检测入门,看这篇就够了(上)
作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾早期的经典工作,并对较新的趋势做一个全景 ...
- IBM云的商务动作之我见(2):IBM 和 VMware 战略合作推进混合云
本系列文章基于公开信息,对IBM云的近期商务动作比如收购.战略合作.整合等,给出本人的快速分析,仅仅代表本人个人观点,和本人所在的公司和所在的岗位没有任何关系: (1)IBM 收购 Blue Box ...
- mp4文件格式解析(一)
原文地址:mp4文件格式解析(一)作者:可下人间 目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准.随后MP4概念被转移到视频上,对应的是MPE ...
- (45)css面试题集锦二
31.怎么让Chrome支持小于12px 的文字? 1.用图片:如果是内容固定不变情况下,使用将小于12px文字内容切出做图片,这样不影响兼容也不影响美观. 2.使用12px及12px以上字体大小:为 ...
- Linux内核 eBPF基础:perf(1):perf_event在内核中的初始化
Linux内核 eBPF基础 perf(1):perf_event在内核中的初始化 荣涛 2021年5月12日 本文相关注释代码:https://github.com/Rtoax/linux-5.10 ...
- 使用数组操作解码YOLO Core ML对象检测(三)
目录 介绍 解码YOLO输出的正确方式 下一步 总目录 将ONNX对象检测模型转换为iOS Core ML(一) 解码Core ML YOLO对象检测器(二) 使用数组操作解码YOLO Core ML ...
最新文章
- 在c语言中指针变量名前面的*表示其后面的,C语言中的指针
- 「我要出轨了」!伯克利的这个AI,可以预测机器人何时将脱离
- python二维数组初始化
- 调用系统相机和相册,并且裁剪成圆形图片(解决6.0,7.0,8.0版本问题)
- 保持危机感和紧迫感_什么是紧迫的:您需要知道的一切
- EDM数据库营销是什么?-EDM数据库营销的概念
- 【后端开发】分析抖音后台架构
- 在libevent中使用线程池
- linux vsftpd 550 create directory operation failed解决方法
- jmeter录制脚本的步骤(很详细)
- ASP.NET MVC5中局部视图的更新
- canvas.toDataURL() gives “Security Error” in IE 11
- 计算神经科学简介~【整理自】类脑计算背后的计算神经科学框架
- SmartGit功能介绍
- 高通量测序数据质控神器Trimmomatic
- 使IT慢如蜗牛的十二个不良习惯
- 三、51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)
- 神经网络图怎么分析,画神经网络结构图
- [Win11] ImportError: DLL load failed while importing _multiarray_umath: 找不到指定的模块 Conda无法激活环境
- 2012年9月 《UDID罗生门》