首先声明代码并没有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. 图解Git

    转载自http://marklodato.github.io/visual-git-guide/index-zh-cn.html#diff 图解Git 其他语言: Deutsch English Es ...

  2. Python下Pip的安装【get-pip】

    1.下载 下载https://bootstrap.pypa.io/get-pip.py 如果不能下载,可下载:http://files.cnblogs.com/files/zhangzhiming/g ...

  3. Mysql中自定义函数编程

    1.语法 1.1 新建函数 Create function function_name(参数列表) returns 返回值类型 函数体 (1)函数名,应该合法的标识符,并且不应该与已有的关键字冲突. ...

  4. Ext.data.association.hasMany一对多模型使用示例

    来自<sencha touch权威指南>第11章,323页开始 --------------------------------------------------- index.html ...

  5. 比较C++、Java、Delphi声明类对象时候的相关语法

    同学们在学习的时候经常会遇到一些问题,C++.Java.Delphi他们到底有什么不一样的呢?今天我们来比较C++.Java.Delphi声明类对象时候的相关语法.希望对大家有帮助! C++中创建对象 ...

  6. PHP发红包程序限制红包的大小

    我们先来分析下规律. 设定总金额为10元,有N个人随机领取: N=1 第一个 则红包金额=X元: N=2 第二个 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数. 第 ...

  7. MP3 Lame 转换 参数 设置(转)

    我们在对音频格式的转换中,打交道最多的就是MP3了.如果你能彻底玩转MP3,那么对你的音频创作和对其他音频格式的掌握会有很大的帮助.下面我们给大家介绍MP3制作软件:LAME 要制作出高音质的MP3靠 ...

  8. Yii2 中国省市区三级联动

    1.获取源码:https://github.com/chenkby/yii2-region 2.安装 添加到你的composer.json文件 "chenkby/yii2-region&qu ...

  9. javascript总结41:表格全选反选,经典案例详解

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. sql server锁检测

    有时候系统运行老感觉效率不高,并且有时候sql还有超时的报错,但是并发量并不高.通过排查定位sql是否有执行效率问题 -- 开事务, 以保持锁 BEGIN TRAN -- 更新 update tabl ...