原題貌似是這樣的,1-9這個數,每個數用兩遍,組成3個六位數,當這3個六位數同時是完全平方數時,輸出這3個六位數;六位數無關順序(a ,b,c)=(a,c,b)。
解析:先找出是完全平方的六位數,先找到滿足要求的三位數(平方下就六位數了)即在這個區間找合適的組合[317,999](原因是316*316=99856,999*999=998001),對這個區間的六位數進行一次刪選,條件是六位數裡不能有0抑或不能乙個數字出現3次,符合要求的三位數放到乙個向量裡,然後進行組合(遞迴或迴圈),找出滿足要求的結果。(最小滿足要求的三位數是336,為了節約時間直接從336開始遍歷)**如下:
一共521種組合,博主只是小小屌絲一枚,求人優化。
//這一行只是為了好看點
#include#include #include using namespace std;
bool isfittable( int num )
for ( int i=5; i>-1; i-- )
if ( flag[0] >0 )
for ( int i=1; i<10; i++ )
} return true;
}bool threeisrigth( int num1, int num2, int num3 )
for ( int i=0; i<6;i++ )
for ( int i=1; i<10; i++ )
} return true;
}int main()
if ( isfittable( temp ) )
} int count=0;
for ( int i=0; i
網易有道的一道演算法面試題
1 存在乙個陣列,陣列大小為2n 1,裡面有n對個數,加上另外乙個單獨出現的數,例如 1,2,2,3,1.陣列是無序的,考慮排序的話一定會超過限制 這5個數中的單獨的數就是3,要你用你能想到的最高效率的方法找出來。這個絕對是個老題,old了啊,old了啊。大家很容易就想到將所有的數直接異或來獲得答案...
第二道20 有效的括號
第二道 20.有效的括號 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 fa...
我的有道第二題(不是雙倍超立方)
先說明一下,我遇到的第二題跟大家先前討論的第二題題目不同,不過最近演算法挺火,也就放上來,大家一起討論討論,而且我覺得有道這次比賽非常好,我看了下topcode平台,大家平時也可以進這個平台練習一下演算法,不過。有道的翻譯還真有待提高了 宣告一下,我演算法沒有學過,只是想到了解決的方法,當時理解題目...