您的位置:首页 > 其它

poj_1154_回溯基础题

2013-05-02 10:25 288 查看
题目描述:

  
给一个矩阵列,矩阵元素为大写字母。起点为矩阵第一行第一列那格。看看走不重复的字母最多能走多少格。

 

解题思路:

   回溯,没啥好说。。。

 

代码:

#include <stdio.h>

#include <stdlib.h>

#define N 21

char str

;

int max=0,f[27];

int r,c,count;

void find(int i, int j)

{

   if(i>r)

   {

     
if(count > max)

        
max = count;

   }

   else

   {

     
if(i>=2 &&
f[str[i-1][j]-'A']==1)

     
{

        
f[str[i-1][j]-'A']=0;

        
count ++;

        
find(i-1,j);

        
count --;

        
f[str[i-1][j]-'A']=1;  

     
}

     
if(i<=r-1 &&
f[str[i+1][j]-'A']==1)

     
{

        
f[str[i+1][j]-'A']=0;

        
count ++;

        
find(i+1,j);

        
count --;

        
f[str[i+1][j]-'A']=1;

     
}

     
if(j>=1 &&
f[str[i][j-1]-'A']==1)

     
{

        
f[str[i][j-1]-'A']=0;

        
count ++;

        
find(i,j-1);

        
count --;

        
f[str[i][j-1]-'A']=1;

     
}

     
if(j<c-1 &&
f[str[i][j+1]-'A']==1)

     
{

        
f[str[i][j+1]-'A']=0;

        
count ++;

        
find(i,j+1);

        
count --;

        
f[str[i][j+1]-'A']=1;

     
}

     
find(r+1,c);

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: