1. 程式人生 > >2017藍橋杯A組賽題解析

2017藍橋杯A組賽題解析

1.迷宮

X星球的一處迷宮遊樂場建在某個小山坡上。 它是由10x10相互連通的小房間組成的。 房間的地板上寫著一個很大的字母。 我們假設玩家是面朝上坡的方向站立,則: L表示走到左邊的房間, R表示走到右邊的房間, U表示走到上坡方向的房間, D表示走到下坡方向的房間。 X星球的居民有點懶,不願意費力思考。 他們更喜歡玩運氣類的遊戲。這個遊戲也是如此! 開始的時候,直升機把100名玩家放入一個個小房間內。 玩家一定要按照地上的字母移動。 迷宮地圖如下:
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

#include <iostream>
#include <string.h>
using namespace std;

int vis[20][20];
char mmap[20][20];
int countt = 0;

int find_(int i, int j){
    while(1){

        if(i < 0 || i > 9 || j < 0 || j > 9 ){
            countt++;
            break;
        }
        if(vis[i][j]) {
            break
; } vis[i][j] = 1; switch(mmap[i][j]){ case 'U': i--;break; case 'L': j--;break; case 'R': j++;break; case 'D': i++;break; default: break; } } return 0; } int main(){ freopen("A.txt", "r", stdin); for
(int i = 0; i <10; i++){ for(int j = 0; j < 10; j++){ cin >> mmap[i][j]; } } for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ memset(vis, 0, sizeof(vis)); find_(i, j); } } cout << countt << endl; }

2.青蛙跳
3.2*2魔方 前下橙上後黃左右旅
4.6*6劃分中心對稱
5.abc字串個數

f(int a, int b, int c, int n){
    if(a < 0 || b < 0 || c < 0) return 0;
    if(n == 0) return 1;
    return f(a-1, b, c, n-1) + f(a, b-1, c, n-1) + f(a, b, c-1, n-1);
} 

6.字串匹配,問個數

 for(i:1 to len)
     for(j:1 to len)
        if(s1[i-1] == s2[j-1])
            a[i][j] = a[i-1][j-1] + 1;

7.正則表示式
8.包子個數
9.分巧克力 10000 10000
10.重疊矩形陰影面積