Sorry, no corresponding articles.
--
--
--
no comments

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Related Posts

Next and Prev

Comments + Add Comment

Leave a comment

11
29
2011
0 comments

ACMプログラミングコンテストの過去問を解く3

シリーズその3。


帰りの列車で、
退屈だったのもあり、
今年の問題を解いてみました。


今回の問題はコレ↓のA
http://neerc.ifmo.ru/regional/neerc-2011.pdf


ASCII Area

今年のA(一番簡単な)問題です。

要約

アスキーアートのように、記号で形を表現し、そのエリアの大きさを求めさせるもの。

考え方

アスキーアートの部分は1行ずつ読み込み、左から1つずつ処理させます。

仕切りの確認、エリアの内外の判定などを実行していきます。

エリア内外の判定フラグでエリア内となった部分の数を、仕切りの数は半分にして加算します。

プログラム

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class AsciiArea {

public static void main(String[] args) {

BufferedReader br = null;
PrintWriter pw = null;

try {
br = new BufferedReader(new FileReader("ascii.in"));
pw = new PrintWriter("ascii.out");

StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int h = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int ans = 0;

for (int i = 0; i < h; i++) {
String str = br.readLine();
boolean area = false;
int line = 0;

for (int j = 0; j < w; j++) {
if (str.charAt(j) == '/' || str.charAt(j) == '\\') {
area = !area;
line++;
} else {
if (area) {
ans++;
}
}
}

ans += line / 2;
}

//System.out.println(ans);
pw.println(ans);

br.close();
pw.close();
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}

if (pw != null) {
pw.close();
}
} catch(IOException e) {
e.printStackTrace();
}
}

}

}

Comments + Add Comment

Leave a comment

Urgench Time

Urgench Temp

Click for Urgench, Uzbekistan Forecast

Tweets

Counter (visitor)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。