首先声明代码并没有AC,内存超了

但我对此无能为力,有没有哪位大神好心教一下怎么写

哈希,然后比较花瓣数组,这些应该都没问题才对。。唉。。

贴MLE代码

import java.util.*;
public class POJ3349 { static int N = 1200007;
public static class HashNode{
int[] num=null;
HashNode next = null;
} // hashlist[i]存储hash值为i的链表
static HashNode[] hashlist = new HashNode[1200010]; // 计算hash值
static int hashValue(int[] num){
int sum = 0;
for(int i=0;i<num.length;i++){
sum += num[i];
}
return sum % N;
} // 比较两种雪花花瓣,每片花瓣都一样才算一样
static boolean cmp(int[] a,int[] b){
if(a.length != b.length)
return false;
int len = a.length;
for(int i=0;i<len;i++){
if(a[i] != b[i]){
return false;
}
}
return true;
} // 根据数组hash值插入hashlist
static void insertHash(int h,int[] num){
HashNode hn = new HashNode();
hn.num = new int[6];
for(int i=0;i<hn.num.length;i++){
hn.num[i]=num[i];
}
hn.next=hashlist[h];
hashlist[h]=hn;
} // 找得到返回真
// 找不到插入hashlist之后返回假
static boolean searchHash(int h,int[] num){
HashNode hn = hashlist[h];
while (hn != null){
if(cmp(hn.num,num)){
return true;
}
hn = hn.next;
}
insertHash(h,num);
return false;
} public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// 顺时针数组,放输入数组{0,1,2,3,4,5,0,1,2,3,4,5}位置上的元素
int[] clockwise = new int[12];
// 逆时针数组,放输入数组{5,4,3,2,1,0,5,4,3,2,1,0}位置上的元素
int[] anticlockwise = new int[12];
boolean twin = false;
// 输入数组
int[] num = new int[6];
// 枚举顺逆时针用的临时数组
int[] temp = new int[6];
while (n-- > 0){
for(int i=0;i<num.length;i++){
num[i]=sc.nextInt();
}
// 已经找到一样的就停止计算,让输入跑跑完
if(twin)
continue;
// 计算顺时针数组
for(int i=0;i<6;i++){
clockwise[i]=clockwise[i+6]=num[i];
}
// 计算逆时针数组
for(int i=0;i<6;i++){
anticlockwise[i]=anticlockwise[i+6]=num[5-i];
}
// 按所有顺逆时针顺序枚举雪花花瓣,看是否存在相同花瓣
int h = hashValue(num); for(int i=0;i<6;i++){
//枚举所有顺时针顺序
for(int j=0;j<6;j++){
temp[j]=clockwise[j+i];
}
if(searchHash(h,temp)){
twin=true;
break;
}
//枚举所有逆时针顺序
for(int j=0;j<6;j++){
temp[j]=anticlockwise[j+i];
}
if(searchHash(h,temp)){
twin=true;
break;
}
}
} if(twin){
System.out.println("Twin snowflakes found.");
}else {
System.out.println("No two snowflakes are alike.");
} } }

  

POJ3349 Snowflake Snow Snowflakes (JAVA)的更多相关文章

  1. [poj3349]Snowflake Snow Snowflakes(hash)

    Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 37615 Accepted: ...

  2. POJ--3349 Snowflake Snow Snowflakes(数字hash)

    链接:Snowflake Snow Snowflakes 判断所有的雪花里面有没有相同的 每次把雪花每个角的值进行相加和相乘 之后hash #include<iostream> #incl ...

  3. poj3349 Snowflake Snow Snowflakes【HASH】

    Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 49991   Accep ...

  4. POJ3349 Snowflake Snow Snowflakes (hash

    Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 48624   Accep ...

  5. poj3349 Snowflake Snow Snowflakes

    吼哇! 关于开散列哈希: 哈希就是把xxx对应到一个数字的东西,可以理解成一个map<xxx, int>(是不是比喻反了) 我们要设计一个函数,这个函数要确保同一个东西能得到相同的函数值( ...

  6. poj3349 Snowflake Snow Snowflakes —— 哈希表

    题目链接:http://poj.org/problem?id=3349 题意:雪花有6个瓣,有n个雪花,输入每个雪花的瓣长,判断是否有一模一样的雪花(通过旋转或翻转最终一样,即瓣长对应相等).如果前面 ...

  7. POJ3349: Snowflake Snow Snowflakes(hash 表)

    考察hash表: 每一个雪花都有各自的6个arm值,如果两个雪花从相同或者不同位置开始顺时针数或者逆时针数可以匹配上,那么这两个雪花就是相等的. 我们采用hash的方法,这样每次查询用时为O(1),总 ...

  8. POJ3349 Snowflake Snow Snowflakes(哈希)

    题目链接. 分析: 哈希竟然能这么用.检查两片雪花是否相同不难,但如果是直接暴力,定会超时.所以要求哈希值相同时再检查. AC代码: #include <iostream> #includ ...

  9. POJ3349 Snowflake Snow Snowflakes 【哈希表】

    题目 很简单,给一堆6元组,可以从任意位置开始往任意方向读,问有没有两个相同的6元组 题解 hash表入门题 先把一个六元组的积 + 和取模作为hash值,然后查表即可 期望\(O(n)\) #inc ...

随机推荐

  1. xdebug 一直报错 upstream timed out (110: Connection timed out) while reading response header from upstream

    本地主机(Windows环境192.168.66.1)访问虚拟机(192.168.66.139)里面的搭建的php环境(系统centos6.5版本,php版本是5.5.30 ,xdebug 2.4.0 ...

  2. Bash空格的那点事-乾颐堂CCIE

    先了解下bash中什么时候该用空格,什么时候不该用. 1. 等号赋值两边不能有空格 2. 命令与选项之间需要空格 3. 管道两边空格可有可无 我们来看看常见的问题 1. 赋值时等号两边或者只有左边多了 ...

  3. spring加载ApplicationContext.xml的四种方式

    spring 中加载xml配置文件的方式,好像有4种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括: XmlBeanFactory , C ...

  4. RenderPage()加载局部页和传递数据

    System.Web.WebPages.WebPageBase类的方法public override HelperResult RenderPage(string path, params objec ...

  5. 编写高质量代码改善C#程序的157个建议——建议77: 正确停止线程

    建议77: 正确停止线程 开发者总尝试对自己的代码有更多的控制.例如,“让那个还在工作的线程马上停止下来”.然而,并非我们想怎样就可以怎样的,这至少涉及两个问题. 第一个问题 正如线程不能立即启动一样 ...

  6. SPOJ - AMR11J ——(BFS)

    The wizards and witches of Hogwarts School of Witchcraft found Prof. Binn's History of Magic lesson ...

  7. alpha七天冲刺计划

    alpha七天冲刺计划(更新ing) 第一天:https://www.cnblogs.com/renluqian/p/9895895.html 第二天: 第三天: 第四天: 第五天: 第六天: 第七天 ...

  8. laravel中的验证及利用uploadify上传图片

    $rules = [ 'password'=>'required|between:6,20|confirmed', ]; $message = [ 'password.required'=> ...

  9. sql查询语句的拼接小技巧(高手勿喷)

    1. 基本的查询语句后面加上 WHERE 1=1,便于增加查询条件. ASkStr := 'select * from Twork where 1=1 '; if length(cxTEworkid. ...

  10. 【项目总结】扯一扯电商网站前端css的整体架构设计(1)

    最近半忙不忙的写了一个外包网站,网站主要功能是艺术品竞拍和艺术衍生品的销售.工程已经完成了80%左右,现在前后端代码量已经50W行左右,我主要负责的是前端设计和前端布局.下面就先放一个网站的设计图吧, ...