首先声明代码并没有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. CS4.1 RPM打包函数分析

    shell举例说明:脚本名称叫test.sh 入参三个: 1 2 3运行test.sh 1 2 3后$*为"1 2 3"(一起被引号包住)$@为"1" &quo ...

  2. [SoapUI] 通过SoapUI发送POST请求,请求的body是JSON格式的数据

    通过SoapUI发送POST请求,请求的body是JSON格式的数据: data={"currentDate":"2015-06-19","reset ...

  3. NAT穿透的详细讲解及分析.RP

    原创出处:https://bbs.pediy.com/thread-131961.htm 转载来源: https://blog.csdn.net/g_brightboy/article/details ...

  4. STL中 map 和 multimap

    1. 所在头文件<map>. 命名空间std, 声明如下: namespace std{ template <class Key,class T, class Compare = l ...

  5. 【转】Java虚拟机详解----常用JVM配置参数

    原文地址:http://www.cnblogs.com/smyhvae/p/4736162.html 本文主要内容: Trace跟踪参数 堆的分配参数 栈的分配参数 零.在IDE的后台打印GC日志: ...

  6. CSS 学习-文本 段落

    段落. 首行缩进 text-indent属性 比如缩进  <p style="text-indent: 2em;">这里是内容....</p> 这里是内容这 ...

  7. spring事务以及springweb

    什么是事务.事务特性.事务隔离级别.spring事务传播特性 https://www.cnblogs.com/zhangqian1031/p/6542037.html Spring AOP 中@Poi ...

  8. MySQL语句基础

    该笔记使用的数据库为MySQL-5.6.34,使用的建表语句为 : /* Navicat MySQL Data Transfer Source Server : 127.0.0.1 Source Se ...

  9. 如何让X5发现你的手机

    1. 手机开启 USB 调试.不用 ROOT.2. 装驱动.(问题就在这里) 首先要装对驱动,如果你的驱动叫 MyHTC,请立即删除. 找个 手机助手.例如 百度 腾讯 360 等等.反正不论你是谁的 ...

  10. Apache Shiro去掉URL中的JSESSIONID

    如果你的shiro版本在1.3.2版本以上这个BUG已经解决只需要在配置文件如下配置中添加红色部分 <!-- 会话管理器 --> <bean id="sessionMana ...