Informatika gyűjtemény

Egy szinttel feljebb fg_welcome4.java

2004050607080910

NézetNyomtat

fg_welcome4.java (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
package welcometocodejamszk;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;

public class fg_welcome4 {

    public static void main(String[] args) throws IOException {
        new fg_welcome4().run();
    }
    
    String sub, main;
    int accel[];
    
    // accel[i] = a sub[...i] string elődofordulásainak a száma 
    //            a main string eddig elolvasott részében
    
    int solve() {
        accel = new int[sub.length()+1];
        Arrays.fill(accel, 0);
        accel[0] = 1;
        
        //System.out.print("  ");
        //for (int x = 0; x < sub.length(); x++) System.out.print(sub.charAt(x)+" "); System.out.println();
        //for (int x = 0; x < accel.length; x++) System.out.print(accel[x]+" "); System.out.println();
        
        for (int i = 0; i < main.length(); i++) {
            for (int j = sub.length()-1; j >= 0; j--) {
                if (main.charAt(i) == sub.charAt(j)) {
                    accel[j+1] = (accel[j+1] + accel[j]) % 10000;
                }
            }
            //for (int x = 0; x < accel.length; x++) System.out.print(accel[x]+" "); System.out.println();
        }
        //System.out.println();
        return accel[accel.length-1];
    }
    
    void run() throws IOException {
        String code = "small-attempt0";
        //String code = "0";
        //String code = "large";
        //String code = "szakkor";
        BufferedReader br = new BufferedReader(new FileReader("C-"+code+".in"));
        PrintWriter pw = new PrintWriter(new FileWriter("C-"+code+".out"));
        sub = br.readLine();
        int N = Integer.parseInt(br.readLine());
        for (int i = 1; i <= N; i++) {
            main = br.readLine();
            int res = solve(); //itt szamoljuk ki az eredmenyt
            pw.printf("Case #%1$d: %2$04d\n", i, res); //eredmeny kiirasa
        }
        br.close();
        pw.close();
    }

}
(Vissza)