zoukankan      html  css  js  c++  java
  • 挑战程序设计竞赛 习题 poj 3050 Hopscotch

    地址 https://vjudge.net/problem/POJ-3050

    The cows play the child's game of hopscotch in a non-traditional way. 
    Instead of a linear set of numbered boxes into which to hop, the cows create a 5x5 rectilinear grid of digits parallel to the x and y axes.
    They then adroitly hop onto any digit in the grid and hop forward, backward, right, or left (never diagonally) to another digit in the grid.
    They hop again (same rules) to a digit (potentially a digit already visited). With a total of five intra
    -grid hops, their hops create a six-digit integer (which might have leading zeroes like 000201). Determine the count of the number of distinct integers that can be created in this manner. Input * Lines 1..5: The grid, five integers per line Output * Line 1: The number of distinct integers that can be constructed Sample Input 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 Sample Output 15 Hint OUTPUT DETAILS: 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111,
    and 212121 can be constructed.
    No other values are possible.

    代码 

    #include <iostream>
    #include <set>
    #include <vector>
    
    using namespace std;
    
    int arr[6][6];
    set<vector<int>> ss;
    
    int addx[4] = {1,-1,0,0};
    int addy[4] = {0,0,-1,1};
    
    void dfs(int x,int y,vector<int>& v)
    {
      if(v.size() == 6){
        ss.insert(v); return;
      }
       v.push_back(arr[x][y]);
        for(int i =0;i < 4;i++){
          int newx = x+ addx[i];
          int newy = y +addy[i];
            if(newx>=0 && newx<5 && newy>=0 && newy <5){
                 dfs(newx,newy,v);
              }
    
        }      
     
       
      v.pop_back();
       return ;
    }
    
    int main(){
    for(int i =0; i < 5;i++){
    for(int j = 0; j<5;j++){
     cin >> arr[i][j];
    }
    }
    
    for(int i =0; i < 5;i++){
    for(int j = 0; j<5;j++){
       vector<int> v;
       dfs(i,j,v);
    }
    }
    cout << ss.size() << endl;
     return 0;
    }
  • 相关阅读:
    subset子集全排序问题
    第15章动态规划------算法导论
    内存管理思维导图------现代操作系统(第四版)
    进程与线程思维导图------现代操作系统(第四版)
    现代操作系统
    GHUnitiOS 单元测试(带UI界面)下载地址
    iOS + webSocket 通讯
    iOS 甘特图的实现
    NSDate根据日期获得当前是周几,以及一年内的第几周,以及一个月内得第几周
    Swift 中文文档
  • 原文地址:https://www.cnblogs.com/itdef/p/14288654.html
Copyright © 2011-2022 走看看