???????? ? ???????? = 2016
其中 ABCD 和 EFGH 都代表一個 4 位數。其中每一個字母(A-H)都代
表 1-9 其中一個數字,不同字母代表的數字不一樣。請計算出上式一
共有多少種解法?例如:4613-2597=2016 就是其中一種解法。 求大神求助!方法不限,有思路答案就行
uj5u.com熱心網友回復:
最簡單的就是因為都是4位數,所以ABCD最小都是3016,EFHH最小是1000,直接回圈遍歷出來滿足條件的就行了。uj5u.com熱心網友回復:
這不是剛有人問過嗎?思路就像LS說的lz參考以下帖子吧
https://bbs.csdn.net/topics/396055683
uj5u.com熱心網友回復:
直接dfs就行……uj5u.com熱心網友回復:
代碼還是比較簡單的,思路就是dfs,就是一個排列組合
#include<bits/stdc++.h>
using namespace std;
int n,r;
bool vis[30];
int a[30];
void pr(){
for(int i=1;i<=r;i++){
cout<<a[i];
if(i==4){
cout<<"-";
}
}
cout<<"=2016"<<endl;
}
void dfs(int x,int num){
if(num>r){
if(a[1]*1000+a[2]*100+a[3]*10+a[4]-a[5]*1000-a[6]*100-a[7]*10-a[8]==2016){
pr();
}
}
else{
for(int i=1;i<=n;i++){
if(!vis[i]){
vis[i]=1;
a[x]=i;
dfs(x+1,num+1);
vis[i]=0;
}
}
}
}
int main(){
scanf("%d%d",&n,&r);
dfs(1,1);
return 0;
}
輸入 9 8
結果為
9 8
4613-2597=2016
5714-3698=2016
5812-3796=2016
7314-5298=2016
7412-5396=2016
8513-6497=2016
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122274.html
標籤:C語言
上一篇:編譯原理 已知語言求文法
