1、簡單列舉
輸入正整數n,按從小到大的順序輸出所有形如abcde/fghij=n的表示式,其中a~j恰好位數字0~9的乙個排序(可以有前導0),2<=n<=79.
樣例輸入:
樣例輸出;
79546 / 01283 = 62
94736 / 01528 = 62
思路:只要列舉fghij就可以算出abcde,然後判斷所有數字是否相同,超過10位時終止列舉。
#include #include #include #include using namespace std;
int main()
}if(flag)}}
return 0;
}
2、分數拆分
輸入正整數k,找到所有的正整數x>=y,使得1/k=1/x+1/y。
樣例輸入:
樣例輸出:
1/2=1/6+1/3;
1/2=1/4+1/4;
1/12=1/156+1/13;
1/12=1/84+1/14;
1/12=1/60+1/15;
1/12=1/48+1/16;
1/12=1/36+1/18;
1/12=1/30+1/20;
1/12=1/28+1/21;
1/12=1/24+1/24;
分析:既然要求找出所有的x,y,列舉物件自然就是x,y了。列舉的範圍從1/12=1/156+1/13可以看出,x可以比y大很多。由於x>=y,有1/x<=1/y,因此1/k-1/y<=1/y,即y<=2k.只要在2k範圍之內列舉y即可。
**:
#include #include using namespace std;
int main()
}cout<0)}}
return 0;
}
暴力求解法 簡單列舉
在剛剛開始準備學習些演算法之前,網路上很多演算法高階攻略都會建議先從一些簡單的基本演算法著手入門,其中包括 列舉,貪心,遞迴和分治,遞推,構造,模擬 這些,正好這段時間我在看的劉汝佳的 演算法競賽入門經典 這本書中涉及了很多關於基礎的東西,對於演算法的學習和acm的訓練都很有幫助,所以我打算從 藍書...
暴力求解法 之 簡單列舉
1 除法 輸入正整數n,按從小到大的順序輸出所有形如abcde fghij n的表示式,其中a j恰好為0 9的乙個排列,2 n 79.樣例輸入 62 樣例輸出 79546 01283 62 94736 01528 62 分析 列舉0 9的所有排列?沒這個必要。只需要列舉fghij就可以算出abcd...
暴力求解法 之 列舉排列
1 生成1 n的排列 include includeconst int n 1e3 10 int a n void print permutation int n,int a,int cur int i,j if cur n 遞迴邊界 for i 0 i 2 生成可重集的排列 上面求排列的程式只適用...