Algoritmo: O imperador Lu Zhin Du

Algoritmo de Maratona de Programação utilizando recursão:

#include<iostream>
using namespace std;
int m,n,k,mat[100][100],vis[100][100];
bool recursao(int i, int j){
	if(j==n-1) return true;
	vis[i][j]=1;
	bool parcial=false;
	if((j<n-1)&&(!vis[i][j+1])&&(abs(mat[i][j+1]-mat[i][j])==k)) parcial=recursao(i,j+1);
	if((!parcial)&&(i>0)&&(!vis[i-1][j])&&(abs(mat[i-1][j]-mat[i][j])==k)) parcial=recursao(i-1,j);
	if((!parcial)&&(j>0)&&(!vis[i][j-1])&&(abs(mat[i][j-1]-mat[i][j])==k)) parcial=recursao(i,j-1);
	if((!parcial)&&(i<m-1)&&(!vis[i+1][j])&&(abs(mat[i+1][j]-mat[i][j])==k)) parcial=recursao(i+1,j);
	return parcial;
}
int main(){
	int t=1;
	while((cin >> m >> n >> k)&&(m!=0)&&(n!=0)){
		memset(vis,0,sizeof(vis));
		for(int i=0;i<m;i++)
			for(int j=0;j<n;j++)
				cin >> mat[i][j];
		bool resposta=false;
		for(int i=0;((i<m)&&(!resposta));i++) resposta=recursao(i,0);
		cout << "Instancia " << t++ << endl << ((resposta)?"sim":"nao") << endl << endl;
	}
	return 0;
}
Compartilhe:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • FriendFeed
  • LinkedIn
  • Live
  • MySpace
  • PDF
  • Rec6
  • Reddit
  • RSS
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Identi.ca
  • Netvibes
  • Tumblr
  • blogmarks
  • Posterous
  • Yahoo! Buzz

Posts relacionados:

  1. Algoritmo: Ajudando a prefeitura
  2. Algoritmo: Os tesouros de Shaou Lee
  3. Algoritmo: Números de Ka Fu
  4. Métodos de Gauss-Seidel e Gauss-Jacobi
  5. Algoritmo 3n+1 (Maratona de Programação)

Tags: ,

This entry was posted on sábado, setembro 13th, 2008 at 11:22 and is filed under algoritmos. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed.