ゲージアルゴリズム

905 ワード

尺取の用途
尺取は一般的に一定の法則のある区間を選択し、一定の区間に対して条件に合致するかどうかを判断した後、この区間を推進するために用いられる.
ゲージアルゴリズム
尺取アルゴリズムは毛虫のように、伸ばしたり縮めたりして区間を取り、問題の答えを見つけます.例えば、長さnの配列と整数mを与え、総和がmより小さくない連続サブシーケンスの最小長を求める入力n=10、m=15 5 1 3 5 10 7 4 9 2出力2
まず,条件(総和がm以下でない)を満たすサブシーケンスを見つけ,その後に進む.条件を満たす長さの小さいサブシーケンスを見つけます.プロセス:
  • 5 1 3 5 10 7 4 9 2 8
  • 5 1 3 5 10 7 4 9 2 8
  • 5 1 3 5 10 7 4 9 2 8
  • 5 1 3 5 10 7 4 9 2 8
  • 5 1 3 5 10 7 4 9 2 8
  • 5 1 3 5 10 7 4 9 2 8
  • 5 1 3 5 10 7 4 9 2 8
  • 5 1 3 5 10 7 4 9 2 8

  • プロセスは毛虫のように這い上がり、条件を満たすかどうかを判断することで区間を推進する.
    完全なコードは次のとおりです.
    #include
    int main()
    {
        int n,m,i,j;
        int a[1001];
        scanf("%d%d",&n,&m);
        for(i=0;i