【poj3349】SnowFlake snow SnowFlake 解题报告+代码
2012-03-02 16:07
281 查看
#include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> ////#define INPUT ////#define DBG /** Begin Time:5:00 p.m. 1st/3/2012 End Time: 8:02 p.m. 1st/3/2012 Cost Time: 3Hours 2Mins 测试数据: 没有…… 思路: 首先读入6个数,要给这6个数排序,然后存在 nodes[i].val里面。 最后给nodes这个数组排序。 从0 -> n-1开始寻找, compare(nodes[i],nodes[i+1]); 如果相同的话,就说明存在相同的雪花。 以上。 */ using namespace std; const int c0de4fun = 10000010; int buf[6]; struct node { int val[6]; }; node nodes[c0de4fun]; int isNotBigger(node a,node b) { int i = 0; while( a.val[i] == b.val[i] && i < 6) i++; if ( i == 6) //equal return 0; if ( a.val[i] > b.val[i] ) return 1; if ( a.val[i] < b.val[i] ) return -1; } int partition(int begin,int end) { node x; node tmp; x = nodes[end]; int k = begin - 1; for(int m = begin; m <= end - 1; m++) { if ( isNotBigger(x,nodes[m]) != 1 ) { k++; //exchange(nodes[k],nodes[m]); tmp = nodes[k]; nodes[k] = nodes[m]; nodes[m] = tmp; } } //exchange(nodes[end],nodes[k+1]); tmp = nodes[end]; nodes[end] = nodes[k+1]; nodes[k+1] = tmp; return k+1; } void sortEle(int begin,int end) { int q = 0; if ( begin < end ) { q = partition(begin,end); sortEle(begin,q - 1); sortEle(q + 1,end); } } void selectSort(int* a,int end) { int tmp = 0; int i; for(int j = 1 ; j < end; j++) { tmp = a[j]; i = j - 1; while( i >= 0 && a[i] > tmp ) { a[i+1] = a[i]; i--; } a[i+1] = tmp; } } int main() { #ifdef INPUT freopen("b:\\acm\\poj3349\\input.txt","r",stdin); #endif int n,i; bool found = false; scanf("%d",&n); for( i = 0 ; i < n ; i++) { for(int j = 0 ; j < 6; j++) scanf("%d",&buf[j]); selectSort(buf,6); memcpy(nodes[i].val,buf,sizeof(int)*6); } sortEle(0,i); for(int j = 0 ; j < i-1; j++) { if(isNotBigger(nodes[j],nodes[j+1]) == 0) { found = true; break; } } if( found ) { printf("Twin snowflakes found.\n"); } else { printf("No two snowflakes are alike.\n"); } return 0; }
相关文章推荐
- POJ_3347 Snowflake Snow Snowflakes 解题报告
- A - SnowflakeSnowSnowflakes解题报告(黄杰)
- A - SnowflakeSnowSnowflakes解题报告
- POJ-3349 Snowflake Snow Snowflakes 解题报告
- POJ-3349 Snowflake Snow Snowflakes 解题报告
- OPJ-3349 SnowflakeSnowSnowflakes 解题报告(hash) 两片相同的雪花
- 二叉堆例题解题报告代码--poj3253、poj2442、poj2010、poj3481
- 【UVa10167】 Birthday Cake,思路+代码+解题报告
- POJ3349 Snowflake Snow Snowflakes
- POJ3349-Snowflake Snow Snowflakes
- 【poj3349】Snowflake Snow Snowflakes(哈希表)
- 【poj1164】The Castle,解题报告+思路+代码+数据
- 【POJ2488】 A knight's Journey 解题报告 测试数据+代码+思路
- POJ3349 Snowflake Snow Snowflakes(hash)
- HDU1698关于线段树的解题报告和代码
- POJ3349-Snowflake Snow Snowflakes
- 【ZOJ1649 Rescue】 解题报告+代码+思路
- POJ3349 Snowflake Snow Snowflakes 【哈希表】
- poj3349 Snowflake Snow Snowflakes(哈希表,散列表)
- 解题报告之代码 pku 1789