我想用深搜来着,搜索乘数被乘数共五个数字,但是只有前三个用例过了,请问为什么啊。。。
# include <iostream>
using namespace std;
int list[11];
int n;
int sum = 0;
int num[6] ={0};
//num 0 1 2 | 3 4 034,12
// 百 十 个 |十 个
bool have(int p)
{
for (int j = 0; j < n; j ++)
{
if (p ==list[j])
return true;
}
return false;
}
void dfs(int i)
{
if(i < 5)
{
for (int j = 0; j < n; j ++) //所有数字的情况
{
num[i] = list[j];
if ((num[0]*100 + num[3]* 10 + num[4]) *num[1] >999 || (num[0]*100 + num[3]* 10 + num[4]) *num[2] >999)
continue;
else
dfs(i + 1);
}
}
else
{
if((num[0]*100 + num[3]* 10 + num[4]) * (num[1] * 10 + num[2])<= 9999)
{
int x = (num[0] * 100 + num[3] * 10 + num[4]) * num[1];
int y = (num[0] * 100 + num[3] * 10 + num[4]) * num[2];
int z = (num[0] * 100 + num[3] * 10 + num[4]) * (num[1] * 10 + num[2]);
if(have(x / 100) &&have((x % 100) /10) &&have(x % 10) &&have(y / 100) &&have((y % 100) /10) &&have(y % 10) &&have(z / 1000) &&have((z % 1000) /100) &&have((z % 100) /10) &&have(z%10))
sum++;
else
return;
}
return;
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; i ++)
{
cin >> list[i];
}
dfs(0);
cout << sum;
system("pause");
return 0;
}