作者wa007123456 (大笨羊)
看板C_and_CPP
標題Re: [問題] 如何實做一個不會重複的"六進位"?
時間Fri Nov 11 20:34:42 2011
我寫好了 囧
答案真的是80個 @@
我是不擇手段 用C#(因為我很懶..)寫的
非常土法煉鋼
大概就是先建立123456~654321間的數字陣列
逐一去刪減得到
1.首先先把數字轉成字串 再把字串轉成字元陣列
2.第二步是土法煉鋼先宣告6個count陣列...然後
如果是不可能的項目先解決
例如:
if (c == '0')
{
number_collecter[i] = -1;
}
給他負一是讓他成為不合格的目標
其他正確的則:
if (c == 'n')
{
counts[n-1]++;
}
//n=1~5
然後檢查每個counts[i]是否大於1
有的話就是重複了 可以給他一個負一
3.把剛才的count拿出來用
for (int j = 123456; j < 654322; j++)
{
if (number_collecter[j] == -1) {
continue
}
count_no++;
}
//count_no=720
4.我們現在已經得到不會重複的數字
終於離目標不遠了! 最後一步很簡單
temp是字元陣列 把剛才得到的數字先轉成字串 在分解成字元
if (temp[i] == 'n' || temp[i] == 'n+1' ||
temp[i+1] == 'n' || temp[i+1] == 'n+1')
{
number_collecter[i] = -1;
count_no--;
}
//i=0~5 n=1~5
5.我完成了 \囧/
原始碼(C#):
http://nopaste.csie.org/2f255
所有正確答案:
http://nopaste.csie.org/c7820
下台一鞠躬...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.228.221.15
※ 編輯: wa007123456 來自: 125.228.221.15 (11/11 20:47)
→ wa007123456:bleed1979大你好 是否可以寄一封信到我的帳號裡面@@ 11/11 22:00
→ wa007123456:你的程式碼相當漂亮 但是我看不懂 囧 11/11 22:00
→ wa007123456:你能夠解釋一下嗎@@ 我附1000P上 11/11 22:00
→ wa007123456:然後我現在是高二生....所以不要用到太難的數學>< 11/11 22:01
→ wa007123456:謝謝你:) 11/11 22:01
→ x000032001:就我看來沒用到甚麼數學耶= = 11/11 22:10
→ diabloevagto:這就單純用FOR把所有可能建出來,不符合就去掉... 11/12 01:58
→ wa007123456:結果他還是沒寄信/ \ 11/12 03:20
→ diabloevagto:自己看就好了啊... 11/12 16:16
→ x000032001:應該是你寄信問他哪邊不懂... 11/12 16:42