白準14226表情(Java、Java)


今回解決した問題.
白俊14226番の表情です
📕 質問リンク
❗¥コード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

class Emo
{
    int chat,clip,time;

    public Emo(int chat,int clip, int time)
    {
        this.chat = chat;
        this.clip = clip;
        this.time = time;
    }
}
public class Main {
    static int S;
    static Queue<Emo> q;
    static boolean [][] visited;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        S = Integer.parseInt(br.readLine());

        q = new LinkedList<>();
        visited = new boolean[2000][2000];
        q.add(new Emo(1,0,0));
        visited[1][0] = true;
        int answer = 0;
        while(!q.isEmpty())
        {
            Emo cur = q.poll();
            if(cur.chat < 1) continue;
            if(cur.chat == S)
            {
                answer = cur.time;
                break;
            }

            for(int i = 0; i < 3; ++i)
            {
                Emo tmp = run(i,cur);
                if(tmp.chat + tmp.clip >= 2000) continue;
                if(!visited[tmp.chat][tmp.clip])
                {
                    visited[tmp.chat][tmp.clip] = true;
                    q.add(tmp);
                }
            }
        }
        System.out.print(answer);
    }
    static Emo run(int flag, Emo cur)
    {
        if(flag == 0) return new Emo(cur.chat,cur.chat,cur.time+1);
        else if(flag == 1) return new Emo(cur.chat+cur.clip,cur.clip,cur.time+1);
        else return new Emo(cur.chat-1,cur.clip,cur.time+1);
    }
}
📝 に答える
これは、入力されたS個の表情を画面に出力するために必要な最小演算回数(秒単位)を要求する問題である.
コピー、貼り付け、削除の3つの操作があります.
現在の画面で出力されている表情が0以下に下がったり、貼り付け操作で範囲外になったりすると、大きな問題が発生します.他の場合の演算を使用すると、最初のSに到達した時間値を出力することで、この問題を解決できます.
📜 ポスト
オンサイトサービスは最も厄介な問題です.S入力の最大値は1000であり,開始時には1つの状態で開始しなければならないため,答えや手順は変わらない.
Sの最大値が1000の場合、計算中の範囲は1000を超えないため、実際にはアクセス配列サイズを2000に設定する必要はありませんが、ロック解除時に1000に設定し、削除操作に設定する必要があることを考慮します.