找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人發表文章前請先閱讀相關版規尊貴會員無限觀看附件圖片
無碼名偵探柯3d中出世紀帝國自慰
輝月あん1568944人中之龍极品家丁魔神器星靈kam 179

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]超龍珠英雄MM 02-

TVアニメ『一拳超人

[繁]葬送的芙莉蓮25-

[繁]因為不是真正的夥

[繁]月光下的異世界之

[簡]北海道辣妹金古錐
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 5727|回復: 6

[問題] leetcode 461.hammingDistance[複製鏈接]

Rank: 1

帖子
235
積分
175 點
潛水值
6380 米
發表於 2017-3-13 05:26 PM|顯示全部樓層
本帖最後由 阿次阿 於 2017-3-13 05:27 PM 編輯

小弟在做這題,要算兩字的漢明距離,0 ≦ x, y < 2^31

int hammingDistance(int x, int y) {
    int n;
    int key=0;
    for(n=31;n>=0;n--){
        if((x/(int)pow(2.0,n))==1){
            if((y/(int)pow(2.0,n))==1){
                x=x%(int)pow(2.0,n);
...
瀏覽完整內容,請先 註冊登入會員
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

CoNsTaRwU 該用戶已被刪除
發表於 2017-3-14 06:18 PM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
未看先猜 int 溢位......
看到你有用 pow,提醒一下 gcc 的 pow 是 builtin function,小心使用

嗯…我猜應該是 pow 丟回 int 的時候溢位了,先試試看把 int 都改 long,ok 了再慢慢修
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 1

帖子
235
積分
175 點
潛水值
6380 米
發表於 2017-3-15 05:21 PM|顯示全部樓層
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
改完後就過了!
感謝大大
不過為何在網路上不能而我用vs2010就能跑...?

使用道具檢舉

CoNsTaRwU 該用戶已被刪除
發表於 2017-3-16 11:39 PM|顯示全部樓層
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
本帖最後由 CoNsTaRwU 於 2017-3-16 11:40 PM 編輯

因為 C 語言雖然會做 type checking,不過在某些(其實超多)地方的行為是不被 type checked 保證的

例如你這裡的 implicit cast long to int 就是其中一種

如果希望編譯器盡他所能在編譯時期幫你找到這些錯誤可以下對應的參數,M$VC 我不瞭解,我自己是喜歡用 clang,我會開 -Wall -Wextra -Weverything -pedantic
...
瀏覽完整內容,請先 註冊登入會員
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 1

帖子
575
積分
196 點
潛水值
14681 米
發表於 2017-3-17 12:16 AM|顯示全部樓層
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
本帖最後由 ren1244 於 2017-3-17 12:20 AM 編輯

先解釋一下問題在哪裡:

當n=31時,「x/(int)pow(2.0,n)」會先計算231=2147483648。但是對32bit的int而言,所能儲存的最大值是2147483647。把2147483648轉換為最大只能儲存2147483647的int原本就有問題。也就是所謂的溢位了。不同編譯器處理方式可能不一樣。

既然題目已經說x,y都會小於231...
瀏覽完整內容,請先 註冊登入會員





使用道具檢舉

Rank: 1

帖子
235
積分
175 點
潛水值
6380 米
發表於 2017-3-17 10:03 PM|顯示全部樓層
ren1244 發表於 2017-3-17 12:16 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

先解釋一下問題在哪裡:

當n=31時,「x/(int)pow(2.0,n)」會先計算2=2147483648。但是對32bit的int而言, ...

強大...受教了
...
瀏覽完整內容,請先 註冊登入會員
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

帖子
100
積分
93 點
潛水值
9200 米
發表於 2017-5-4 09:53 PM|顯示全部樓層
其實就是計算 x xor y 的二進位表示法裡面有多少1

提供一個「二進位表示法裡面有多少1」很有名的作法

int a = x ^ y;
int cnt = 0;
while( a ){
   cnt += 1;
   a &= a-1;
}
return cnt;

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部