NC24022. [USACO 2016 Jan S]Build Gates
描述
输入描述
The first line of input contains N (1≤N≤1000). The next line contains a string of length N describing FJ's path. Each character is either N (north), E (east), S (south), or W (west).
输出描述
Write out a single integer giving the minimum number of gates FJ needs to build to restore complete connectivity to all regions of his farm. Note that the answer could be zero if the farm is connected to begin with.
示例1
输入:
14 NNNESWWWSSEEEE
输出:
2
Java(javac 1.8) 解法, 执行用时: 50ms, 内存消耗: 13072K, 提交时间: 2020-06-14 03:53:57
import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception{ Scanner in = new Scanner(System.in) ; int a = in.nextInt(); String b = in.next(); int x=0; int y=0; int xpre; int ypre; Set edges=new HashSet(); Set vertices=new HashSet(); vertices.add(x + " " + y); for(int c=0;c<a;c++){ xpre=x; ypre=y; if(b.charAt(c)=='N'){ x=xpre; y=ypre+1; } else if(b.charAt(c)=='S'){ x=xpre; y=ypre-1; } else if(b.charAt(c)=='E'){ x=xpre+1; y=ypre; } else{ x=xpre-1; y=ypre; } vertices.add(x+" "+y); if(b.charAt(c)=='N' || b.charAt(c)=='E'){ edges.add(xpre+" "+ypre+" "+x+" "+y); } else{ edges.add(x+" "+y+" "+xpre+" "+ypre); } } System.out.println(edges.size()-vertices.size()+1); } }