C言語 アルゴリズム

動的計画法 c言語

【問題】額面がB1, B2,..., Bm 円のm種類の紙幣を使って総額n円を支払うときの紙幣の最小枚数を求なさい。各額面の紙幣は何度でも使用できる。入力 最初の行に整数nと整数m、次の行に空白区切りでm種類の紙幣の額面 n m B1 B2 ... Bm出力 必要な紙幣の最小枚…

分割統治法 最小値

今回は分割統治法により最小値を求めるプログラムを作成しました。分割統治法とは、端的に説明すると細かくブロック範囲を再帰的にブロック分けしていき、 範囲を狭めた中で処理を行うアルゴリズムです。入力例 nはデータの数 na, n2, ... nnは各データの値…

階乗計算 再帰関数

非負整数nが与えられたとき、nの階乗を再帰的に求めて出力しなさい。ただし0! = 1と定義する。入力: 非負整数n 出力: nの階乗を出力して改行 制約: 0 入力例: 3出力例: 6 (改行して終了) #include <stdio.h> long int Fuctorial(long int); int main(void){ long in</stdio.h>…

文字列 add, remove, find 実装

以下の命令を実行する簡易的な入れ物を実装しなさい。 add str : 文字列 strを登録 remove str: 文字列 strが登録済みの場合は登録削除 find str : 文字列 strが登録済みの場合は yes 、さもなくば no と出力入力: 最初の行に命令の数 nが与えられる。続くn…

数字 含む含まれない

n個の整数を含む数列Sと、q個の異なる整数を含む数列Tが与えられるとき、 Tに含まれる整数の中でSに「含まれない」ものを空白区切りで列挙し(c個の整数を含む数列Vとする)、 さらに個数cを出力しなさい。入力: 1行目にn、2行目にSを表すn個の空白区切りの…

双方向連結リスト

以下の命令を受け付ける双方向連結リストを実装しなさい。insertFirst x 先頭に要素の継ぎ足し insertLast x 末尾に要素の継ぎ足し delete x キーxを持つ最初の要素を削除 deleteFirst 先頭の要素を削除 deleteLast 末尾の要素を削除 deleteAll 全要素の削除…

キュー

キューを用いてラウンドロビンによるスケジューリングをシミュレートし、キューの内容が変わるたびにその内容を出力しなさい。最後にプロセスが完了したら、各プロセス名と終了時刻を空白で区切って終了した順に1行で出力し改行して終了すること。ラウンドロ…

スタック 計算

スタックを用いて、逆ポーランド記法で与えられた数式の計算し、計算途中のスタック の要素列と共に計算結果を出力しなさい。スタックには数値のみを出し入れすること。 入力: 末尾が = で終わる1つの数式が1行で与えられる。連続するシンボル(オペランドま…

選択ソート

N個の整数から成る数列Vが与えられたとき、その内容を選択ソートにより降順に並び替えて、 要素の交換回数、および並び替えた結果を出力しなさい。 入力: 最初の行に整数N。次の行にNこの整数が空白区切りであたえられる。 出力: 1行目に、選択ソートにより…

バブルソート

N個の整数から成る数列Vが与えられたとき、その内容をバブルソートにより降順に並び替えて、 要素の交換回数、および並び替えた結果を出力しなさい。 入力: 最初の行に整数N。次の行にNこの整数が空白区切りであたえられる。 出力: 1行目に、バブルソートに…

挿入ソート

N個の整数から成る数列Vが与えられたとき、その内容を挿入ソートにより降順に並び替えて、 最も内側のループの内部処理の実行回数、および並び替えた結果を出力しなさい。 入力: 最初の行に整数N。次の行にN個の整数が空白区切りであたえられる。 出力: 1行…