結果

問題 No.437 cwwゲーム
ユーザー tsuchinaga
提出日時 2019-03-27 09:11:09
言語 Go
(1.23.4)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 987 bytes
コンパイル時間 13,486 ms
コンパイル使用メモリ 226,032 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2024-10-12 08:50:43
合計ジャッジ時間 14,893 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 41
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import "fmt"

func main() {
	var n string
	var ans int
	_, _ = fmt.Scan(&n)
	r := []rune(n)

	type cww struct {
		score   int
		indexes []int
	}
	cwws := make([]cww, 0)
	for i := 0; i < len(r)-2; i++ {
		if r[i] == '0' {
			continue
		}

		for j := i + 1; j < len(r)-1; j++ {
			if r[i] == r[j] {
				continue
			}

			for k := j + 1; k < len(r); k++ {
				if r[j] == r[k] {
					c := cww{int(r[i]-'0')*100 + int(r[j]-'0')*10 + int(r[k]-'0'), []int{i, j, k}}

					for _, p := range cwws {
						add := true
						for _, in := range p.indexes {
							if in == i || in == j || in == k {
								add = false
								break
							}
						}
						if add {
							cwws = append(cwws, cww{p.score + c.score, append([]int{i, j, k}, p.indexes...)})
							if ans < p.score+c.score {
								ans = p.score + c.score
							}
						}
					}

					cwws = append(cwws, c)
					if ans < c.score {
						ans = c.score
					}
				}
			}
		}
	}

	// fmt.Println(cwws)
	fmt.Println(ans)
}
0