日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

CCF201604-4 游戏

發(fā)布時間:2024/5/15 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CCF201604-4 游戏 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目:

問題描述 小明在玩一個電腦游戲,游戲在一個n×m的方格圖上進(jìn)行,小明控制的角色開始的時候站在第一行第一列,目標(biāo)是前往第n行第m列。
  方格圖上有一些方格是始終安全的,有一些在一段時間是危險的,如果小明控制的角色到達(dá)一個方格的時候方格是危險的,則小明輸?shù)袅擞螒?#xff0c;如果小明的角色到達(dá)了第n行第m列,則小明過關(guān)。第一行第一列和第n行第m列永遠(yuǎn)都是安全的。
  每個單位時間,小明的角色必須向上下左右四個方向相鄰的方格中的一個移動一格。
  經(jīng)過很多次嘗試,小明掌握了方格圖的安全和危險的規(guī)律:每一個方格出現(xiàn)危險的時間一定是連續(xù)的。并且,小明還掌握了每個方格在哪段時間是危險的。
  現(xiàn)在,小明想知道,自己最快經(jīng)過幾個時間單位可以達(dá)到第n行第m列過關(guān)。 輸入格式 輸入的第一行包含三個整數(shù)n, m, t,用一個空格分隔,表示方格圖的行數(shù)n、列數(shù)m,以及方格圖中有危險的方格數(shù)量。
  接下來t行,每行4個整數(shù)r, c, a, b,表示第r行第c列的方格在第a個時刻到第b個時刻之間是危險的,包括a和b。游戲開始時的時刻為0。輸入數(shù)據(jù)保證r和c不同時為1,而且當(dāng)r為n時c不為m。一個方格只有一段時間是危險的(或者說不會出現(xiàn)兩行擁有相同的r和c)。 輸出格式 輸出一個整數(shù),表示小明最快經(jīng)過幾個時間單位可以過關(guān)。輸入數(shù)據(jù)保證小明一定可以過關(guān)。 樣例輸入 3 3 3
2 1 1 1
1 3 2 10
2 2 2 10 樣例輸出 6 樣例說明 第2行第1列時刻1是危險的,因此第一步必須走到第1行第2列。
  第二步可以走到第1行第1列,第三步走到第2行第1列,后面經(jīng)過第3行第1列、第3行第2列到達(dá)第3行第3列。 評測用例規(guī)模與約定 前30%的評測用例滿足:0 < n, m ≤ 10,0 ≤ t < 99。
  所有評測用例滿足:0 < n, m ≤ 100,0 ≤ t < 9999,1 ≤ r ≤ n,1 ≤ c ≤ m,0 ≤ a ≤ b ≤ 100。


已AC的代碼:

#include <stdio.h> #include <iostream>struct posdata {int time;int newtime;int dmin; //危險時間的開始int dmax; //危險時間的結(jié)束 }; typedef struct posdata posdata;posdata data[100 + 1][100 + 1];int m, n, t; int r, c, a, b;#define isDanger(a,b,t) (data[a][b].dmin<=t && data[a][b].dmax>=t)int main(void) {int i, j;int ntime;scanf("%d%d%d", &n, &m, &t);for (i = 1;i<n + 1;++i)for (j = 1;j<m + 1;++j)data[i][j] ={ -1, -1, -1, -1 };for (i = 0;i<t;++i){scanf("%d%d%d%d", &r, &c, &a, &b);data[r][c] ={ -1, -1, a, b };}data[1][1].time = 0;//1000 is a max numfor (ntime = 0;ntime<1000;++ntime) //記錄當(dāng)前經(jīng)過的時間{for (i = 1;i<n + 1;++i) //行for (j = 1;j<m + 1;++j) //列if (data[i][j].time == ntime){if (i != n && ! isDanger(i + 1, j, ntime + 1)) //往下走data[i + 1][j].newtime = ntime + 1;if (j != m && ! isDanger(i, j + 1, ntime + 1)) //往右走data[i][j + 1].newtime = ntime + 1;if (i != 1 && ! isDanger(i - 1, j, ntime + 1)) //往上走data[i - 1][j].newtime = ntime + 1;if (j != 1 && ! isDanger(i, j - 1, ntime + 1)) //往左走data[i][j - 1].newtime = ntime + 1;}for (i = 1;i<n + 1;++i)for (j = 1;j<m + 1;++j)data[i][j].time = data[i][j].newtime;if (data[n][m].time != -1)break;}printf("%d", ntime + 1);return 0; }

總結(jié)

以上是生活随笔為你收集整理的CCF201604-4 游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。