poj3349 Snowflake Snow Snowflakes

來源:互聯網
上載者:User

寫這道題目時,發現自己也像其它人一樣不會寫Hash演算法,沒辦法,去網上找了個別人的演算法來,哎.....不過是自己認真寫的,真的很意義!!!

 

寫這個題目後,發現自己對資料結構中散列表尋找——連結法,有了新的認識,真是個好東西啊!!呵呵。。。

#include<iostream><br />using namespace std; </p><p>const int MAX = 100000;<br />const int P = 33119;</p><p>int data[MAX][6];</p><p>struct link<br />{<br />int n;<br />link *next;<br />}Hash[P];</p><p>int compare(int a[], int b[])<br />{<br />for(int i=0; i<6; i++)<br />if(a[i] < b[i])<br />return -1;<br />else if(a[i] > b[i])<br />return 1;<br />return 0;<br />}</p><p>void g(int data[])<br />{</p><p>int i,j,k;<br />int a[6],b[6];<br />for(i=0; i<6; i++)<br />a[i] = data[i];</p><p>for(i=1; i<6; i++)<br />{<br />for(k=0; k<6; k++)<br />b[k] = data[(i+k)%6];</p><p>if(compare(b,a) == -1)<br />{<br />for(k = 0; k < 6; k++)<br />a[k] = b[k];<br />}<br />}<br />if(compare(a, data) == -1)<br />for(k = 0; k < 6; k++)<br />data[k] = a[k];</p><p>int c[6];<br />for(k = 0; k < 6; k++)<br />c[k] = data[5-k];</p><p>for(k = 0; k < 6; k++)<br />a[k] = c[k];</p><p>for(i=1; i<6; i++)<br />{<br />int b[6];<br />for(k=0; k<6; k++)<br />b[k] = c[(i+k)%6];</p><p>if(compare(b,a) == -1)<br />{<br />for(k = 0; k < 6; k++)<br />a[k] = b[k];<br />}<br />}<br />if(compare(a, data) == -1)<br />for(k = 0; k < 6; k++)<br />data[k] = a[k];<br />}</p><p>int main()<br />{<br />int i,j,k;</p><p>int t;<br />scanf("%d",&t);<br />bool flag = false;</p><p>for(i=0; i<t; i++)<br />{<br />for(j=0; j<6; j++)<br />scanf("%d", &data[i][j]);</p><p>if(flag == true)<br />continue;</p><p>g(data[i]);</p><p>k = 0;<br />for(j=0; j<6; j++)<br />k += data[i][j];<br />k = k%P;</p><p>link * p = &Hash[k];</p><p>while(p->next != NULL)<br />{<br />p = p->next;<br />int index = p->n;<br />if(compare(data[i], data[index]) == 0)<br />flag = true;<br />}</p><p>p->next = new link;<br />p->next->n = i;<br />p->next->next = NULL;<br />}</p><p>if (flag) cout << "Twin snowflakes found./n";<br /> else cout << "No two snowflakes are alike./n";<br />//system("pause");<br />return 0;<br />}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.