Fisher-Yatesのシャッフルアルゴリズムをc言語で実装 配列の要素をランダムに並べ替える手法として、Fisher-Yatesのシャッフルアルゴリズムが有名ですね。 ランダムに選ばれた配列の要素を、配列の末尾の要素・・・
「c言語」の記事一覧
[c言語]関数の引数に配列を指定する場合は、サイズをセットで渡す
関数の引数にセットした配列をsizeofすると、ポインタの型のサイズが返される 関数の引数にセットした配列をsizeofすると、ポインタで指定するわけなので、 ポインタの型のサイズが返されてしまいます。 例えば、下記の配・・・
[c言語]ダブルポインタとmalloc()で2次元配列を作成
[c言語]ダブルポインタとmalloc()で2次元配列を作成 ダブルポインタとmalloc()で2次元配列を作成してみようと思います。 ダブルポインタと配列の関係を実感するのみ、良い取り組みだと思っています。 参考:[c・・・
[c言語]素数をプログラミングで求めてみる
[c言語]素数をプログラミングで求めてみる 素数は、1より大きな整数で、1と自分自身以外に約数を持っていない(1と自分自身以外の自然数でも割り切れない)数です。 まずは、下記のように、計算量が大きくなりますが、素直に1と・・・
[c言語]enumとswitch文を使って状態遷移を実現
enumとswitch文を使って状態遷移を実現 enumで状態を定義して、switch文を使って状態遷移を実現できますね。 良くみられる手法だと思います。 enumとswitch文を使うことで、可読性が格段に上がります。・・・
[c言語]ナップザック問題を動的計画法でコーディング
再帰を使った場合 参考:[c言語]フィボナッチ数列を動的計画法でコーディング 容量Wmaxのナップザックに、N個の品物を入れる。 品物iの重さがw[i] 価値がv[i]であるときに、容量Wmaxを超えない、 かつ、価値が・・・
[c言語]トリプルポインタを関数の引数に渡して、2次元配列のメモリ確保をする
トリプルポインタを関数の引数に渡して、2次元配列のメモリ確保をする 関数内で2次元配列のメモリ確保をして、関数の引数に返すためには、その引数にはトリプルポインタを渡してあげる必要があります。 c言語でここまで操作できると・・・
最大部分配列問題をc言語で実装してみる
全探索での実装 下記のように2重ループ処理をして、全探索をします。 全ての組み合わせの合計値を順次算出して、最大値を更新していきます。 getMax()については、別途関数として実装しています。 サンプルコードを参照して・・・
[c言語]フィボナッチ数列を動的計画法でコーディング
再帰を使った場合 参考:[c言語]ナップザック問題を動的計画法でコーディング 下記がサンプルコードになります。 f(n)からf(n-1)とf(n-2)を再帰的に呼び出します。 重複計算もあって、n=45で13秒かかってい・・・
[c言語]バイナリーサーチ(二分探索)のサンプルコード
バイナリーサーチ(二分探索) まずは、下記のように、ソート・ユニークされた配列を対象にします。 int arr[MAX] = {1,3,5,6,7,9,10,11,22}; バイナリーサーチは、サーチ対象の中央を起点とし・・・