usetc oj --Android key

제목 은 크게 안 드 로 이 드 자 물 쇠 를 사용 하여 길이 와 폭 을 정 한 다음 에 길 이 를 정 하고 모두 몇 개의 선택 이 있 는 지 계산 하 는 것 입 니 다. (방향 이 다 르 면 서로 다른 옵션 을 계산 합 니 다)
입력 샘플
2 2 3
3 3 2

출력 샘플
8
24
#include <stdio.h>
#include <string.h>

int m,n,k,a[10][10],allways;

void dfs(int i,int j,int way)
{
    if(way==k)
    {
       allways++;
       return;
    }
    //     
    if(i<n-1&&a[i+1][j]==0)
    {
         a[i+1][j]=1;
         dfs(i+1,j,way+1);
         a[i+1][j]=0;
    }
    //     
    if(i>0&&a[i-1][j]==0)
    {
         a[i-1][j]=1;
         dfs(i-1,j,way+1);
         a[i-1][j]=0;
    }
    //     
    if(j<m-1&&a[i][j+1]==0)
    {
         a[i][j+1]=1;
         dfs(i,j+1,way+1);
         a[i][j+1]=0;
    }
    //     
    if(j>0&&a[i][j-1]==0)
    {
         a[i][j-1]=1;
         dfs(i,j-1,way+1);
         a[i][j-1]=0;
    }
}

int main()
{
    while( scanf("%d%d%d",&n,&m,&k)==3)
    {
    int i,j;
    memset(a,0,sizeof(a));
    allways=0;
    for(i=0;i<n;i++)
      for(j=0;j<m;j++)
      {
        a[i][j]=1;
        dfs(i,j,1);
        a[i][j]=0;
      }
    printf("%d
",allways); } return 0; }

좋은 웹페이지 즐겨찾기