欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

洛谷P1008 三连击

程序员文章站 2024-02-01 19:49:40
...

P1008 三连击
思路:递归
代码:

#include<iostream>
using namespace std ;

int a[9] = {0} ;
int b[10] = {0} ;

bool dep ()
{
	if (((a[0] * 100 + a[1] * 10 + a[2]) * 2 == a[3] * 100 + a[4] * 10 + a[5]) && ((a[0] * 100 + a[1] * 10 + a[2]) * 3 == a[6] * 100 + a[7] * 10 + a[8]))
	  return true ;
	return false ; 
}
void dfs (int index)
{
	if (index == 9)
	{
	   if (dep () == true)
	    {
	      cout << a[0] * 100 + a[1] * 10 + a[2] << " " << a[3] * 100 + a[4] * 10 + a[5] << " " << a[6] * 100 + a[7] * 10 + a[8] << endl ;
	    }
	   return ;
	} 
    
    for (int i = 1; i < 10; i++)
    {
    	if (!b[i])
    	{
    		a[index] = i ;
    		b[i] = 1 ;
    		dfs (index + 1) ;
    		b[i] = 0 ;
		}
	}
}

int main ()
{
    dfs (0) ;	
	return 0 ;
}