珠玉のプログラミング

部分配列で、その和が最大になるものを求める〜その4〜

最後に、走査アルゴリズムというのを実装してみました。 例によって詳細は「珠玉のプログラミング」に載っているのですが、簡単に説明すると、x[0...n]までの部分配列の最大和は、x[0...n-1]の部分配列の最大和か、x[n]から左方向に伸びた配列の和のいずれか…

部分配列で、その和が最大になるものを求める〜その2その3〜

昨日のアルゴリズムからループ一つ減らしたもの。 #include <iostream> #include <boost/random.hpp> #include "autoStopWatch.h" using namespace std; using namespace boost; const int ARRAY_LENGTH = 10000; float x[ARRAY_LENGTH]; //部分和を総当たりで調べて、和の最大を求める関</boost/random.hpp></iostream>…

部分配列で、その和が最大になるものを求める〜その1〜

珠玉のプログラミングで取り上げられていた問題を、実際に解いてみる。問題: 1次元のパターン認識の問題。n要素の浮動小数点の配列xを入力とし、配列xの連続した要素(部分配列)でその和が最大になるものを見つけて、その和を出力する。たとえば、 2,-3…

問:0..n-1からm個の整数をランダムに選び出し、ランダムに出力するプログラムを作れ

ごり押し。長文。ださいorz #include <iostream> #include <vector> using namespace std; const int n = 11; const int m = 10; vector<int> container; int rand_n(int n){ return rand() % n; } //重複true ノット重複false bool repetition_check(int i){ vector<int>::iterator it =</int></int></vector></iostream>…