FirstStep(洛谷P3654题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
FirstStep(洛谷P3654题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
題目鏈接
分析
題意簡單的說就是找連續的 “.” 。
必須是水平連續或是垂直連續。
當然是開一個暴力的搜索算法啦!
從開始搜到最后,每次只搜右向和下向,避免重復搜索,注意防止越界。
但是!!!當連續值為1的時候,直接找一下一共幾個點就行了,否則就會重復一倍。
AC代碼(Java語言描述)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {int result = 0;BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String[] line1 = reader.readLine().split("\\s+");int n = Integer.parseInt(line1[0]), m = Integer.parseInt(line1[1]), k = Integer.parseInt(line1[2]);char[][] graph = new char[n][m];for (int i = 0; i < n; i++) {char[] read_temp = reader.readLine().toCharArray();for (int j = 0; j < m; j++) {graph[i][j] = read_temp[j];}}reader.close();if (k == 1) {for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (graph[i][j] == '.') {result++;}}}System.out.println(result);return;}boolean flag = false;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {for (int p = 0; p < k; p++) {if (i+p >= n) {flag = true;break;} else if (graph[i+p][j] != '.') {flag = true;}}if (flag) {flag = false;} else {result++;}for (int p = 0; p < k; p++) {if (j+p >= m) {flag = true;break;} else if (graph[i][j+p] != '.') {flag = true;}}if (flag) {flag = false;} else {result++;}}}System.out.println(result);} }總結
以上是生活随笔為你收集整理的FirstStep(洛谷P3654题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】灵活使用自定义注解和反射
- 下一篇: 【离散数学】二元关系的性质