Snowflake Snow Snowflakes(查找)
http://poj.org/problem?id=3349
题意:给出n组数据,每组数据有六个数,这n组数据中若有两组数据不管是从某个数顺时针读还是逆时针读都相同,输出“Twin snowflakes found.”,否则,输出
"No two snowflakes are alike."
思路:将每组数据求和对大素数取余,将sum相同的放在同一个邻接表中,然后从邻接表中查找符合条件的数据。
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std; const int p=;
const int N=;
int arr[N][];
struct node
{
int sum;
int id;
};
vector<node>v[N];//将每组数据的sum相同放在v[sum]邻接表里; int s_ee(int n,int m)//顺时针查找
{
int i,j;
for (i = ; i < ; i ++)
{
if(arr[n][i]==arr[m][])
{
for (j = ; j < ; j ++)
{
if (arr[n][(i+j)%]!=arr[m][j])
break;
}
if (j >= )
return ;
}
}
return ;
}
int ee_s(int n,int m)//逆时针查找
{
int i,j;
for (i = ; i < ; i ++)
{
if (arr[n][i]==arr[m][])
{
for (j = ; j < ; j ++)
{
if (arr[n][(i+j)%]!=arr[m][-j])
break;
}
if (j >= )
return ;
}
}
return ;
}
int main()
{
int n,flag = ,sum ;
scanf("%d",&n);
for (int i = ; i <= N; i ++)
v[i].clear();//初始化vector
for (int i = ; i < n; i ++)
{
sum = ;
for (int j = ; j < ; j ++)
{
scanf("%d",&arr[i][j]);
sum += arr[i][j];
}
int t = sum%p;
if (!flag)//没有找到相同的两组
{
for (int j = ; j < v[t].size(); j ++)
{
if ((s_ee(v[t][j].id,i))||ee_s(v[t][j].id,i))
{
flag = ;
break;
}
}
if (!flag)
{
v[t].push_back((node){sum,i});//放到邻接表里
}
}
}
if (flag)
printf("Twin snowflakes found.\n");
else
printf("No two snowflakes are alike.\n");
return ;
}
Snowflake Snow Snowflakes(查找)的更多相关文章
- poj 3349:Snowflake Snow Snowflakes(哈希查找,求和取余法+拉链法)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 30529 Accep ...
- [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 30512 Accep ...
- POJ 3349 Snowflake Snow Snowflakes(简单哈希)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 39324 Accep ...
- Snowflake Snow Snowflakes(哈希表的应用)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27312 Accep ...
- POJ 3349 Snowflake Snow Snowflakes
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 27598 Accepted: ...
- POJ 3349:Snowflake Snow Snowflakes(数的Hash)
http://poj.org/problem?id=3349 Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K T ...
- 哈希-Snowflake Snow Snowflakes 分类: POJ 哈希 2015-08-06 20:53 2人阅读 评论(0) 收藏
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 34762 Accepted: ...
- [poj3349]Snowflake Snow Snowflakes(hash)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 37615 Accepted: ...
- POJ--3349 Snowflake Snow Snowflakes(数字hash)
链接:Snowflake Snow Snowflakes 判断所有的雪花里面有没有相同的 每次把雪花每个角的值进行相加和相乘 之后hash #include<iostream> #incl ...
随机推荐
- HashMap中capacity、loadFactor、threshold、size等概念的解释
约定 约定前面的数组结构的每一个格格称为桶 约定桶后面存放的每一个数据称为bin bin这个术语来自于JDK 1.8的HashMap注释. size size表示HashMap中存放KV的数量(为链表 ...
- The Standard SSL Handshake
The following is a standard SSL handshake when RSA key exchange algorithm is used: 1. Client Hello ...
- css nth-child 的应用
最近改视频监控页面,由于窗口比较多,以前是通过计算窗口大小位置来处理页面布局的,其实还是比较麻烦,而且偶尔会有页面位置错乱的现象,虽然只是及其偶尔的现象,但总归是不好. 计算窗口位置的代码: /*监控 ...
- 怎么设置font awesome图标的大小?
<i class="fa fa-camera-retro fa-lg"></i> fa-lg <i class="fa fa-camera- ...
- java数据类型和码表、转义字符
类型名称 字节空间 范围 整数型 byte 1 -27到27-1 或者 -128到127 short 2 -215到215-1 int 4 -231到231-1 long 8 ...
- adjtimex修改tick值用法举例
测试 用户态下内核时钟计数间隔,默认都是100HZ.因此单个tick代表了10^4 us. 可以设置每个tick代表的时钟长度,因此把tick增加1(即增加为10001us)的影响是每天时间快8.64 ...
- Python学习【第4篇】:Python之文件操作
文件操作 读取一行 f=open("D:\\1.txt",'rb') print f.readline() f.close() 将文件内容保存在一个list with open(& ...
- web前端习总结--JavaScript
JavaScript 什么是JavaScript JavaScript是嵌入HTML中在浏览器中的脚本语言,有与Java和C语言类似的语法 一种网页编程技术,用来向HTML页面添加交互行为 直接嵌入H ...
- Spring框架学习之SpringAOP(二)
AOP概念 AOP(Aspect-Oriented Programming,面向切面编程),AOP是OOP(面向对象编程)的补充和完善 AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用 ...
- Linux系统学习之 一:新手必须掌握的Linux命令1
2018-10-03 16:04:12 一.常用系统工作命令 1.wget 命令 作用:用于在终端中下载网络文件. 格式:wget [参数] 下载地址 参数及作用: -b : 后台下载模式 -d:显示 ...