結果
問題 |
No.115 遠足のおやつ
|
ユーザー |
![]() |
提出日時 | 2015-09-02 11:10:05 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 139 ms / 5,000 ms |
コード長 | 1,277 bytes |
コンパイル時間 | 2,839 ms |
コンパイル使用メモリ | 86,572 KB |
実行使用メモリ | 41,808 KB |
最終ジャッジ日時 | 2025-01-03 01:08:03 |
合計ジャッジ時間 | 9,015 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.Scanner; import java.util.Set; public class Main { public static LinkedList<Integer> dfs(final int deep, final int K, final int N, int start, int purpose){ if(deep >= K){ if(purpose == 0){ return new LinkedList<Integer>(); }else{ return null; } } final int rest = K - deep; final int maximum = N * rest; if(purpose > maximum){ return null; } //System.out.println(deep + " " + start + " " + purpose); for(int price = start; price <= N; price++){ if(purpose - price < 0){ break; } LinkedList<Integer> ret = dfs(deep + 1, K, N, price + 1, purpose - price); if(ret != null) { ret.addFirst(price); return ret; } } return null; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); final int N = sc.nextInt(); final int D = sc.nextInt(); final int K = sc.nextInt(); LinkedList<Integer> ret = dfs(0, K, N, 1, D); if(ret == null){ System.out.println(-1); return; } boolean first = true; for(final int val : ret){ if(first){ first = false; }else{ System.out.print(" "); } System.out.print(val); } System.out.println(); } }