検索結果 17 件

by m3908714035
4年前
フォーラム: C言語何でも質問掲示板
トピック: 順列のアルゴリズムについて
返信数: 5
閲覧数: 2758

Re: 順列のアルゴリズムについて

どういう修正をしたのかを具体的に書いてください。 おそらく、if (iterator == vi.end()) vi.erase(iterator); で、存在しない要素を削除したのが間違いだったのでしょうが。 おっしゃる通りです。投げやりな投稿失礼いたしました。 その出力を出すコンパイル可能なプログラムを貼り付けてください。 ヘッダのインクルードや main を含むものです。 コード全体としては完成していませんが、下記のコードで動かしました。 #include <iostream> #include <chrono> #include <vector> #include <string> ...
by m3908714035
4年前
フォーラム: C言語何でも質問掲示板
トピック: 順列のアルゴリズムについて
返信数: 5
閲覧数: 2758

Re: 順列のアルゴリズムについて

修正しました。 void search(std::vector<int> &_vi, std::vector<int> vi, int i) { std::vector<int> conceivable_gap; for (int number = 2; pow(number, 2) <= i * 2; number++) { if (i * 2 % number == 0) { conceivable_gap.push_back(number); if (number != 1 && pow(number, 2) != i * 2) { conceivable_gap.push_back(i...
by m3908714035
4年前
フォーラム: C言語何でも質問掲示板
トピック: 順列のアルゴリズムについて
返信数: 5
閲覧数: 2758

順列のアルゴリズムについて

<QUESTION> それぞれ同じ個数( i個 )の"1"と"0"からなる円順列の集合Aを列挙せよ。 ※ 円順列は文字列であって数値ではない  この問題は数は少ないうちはまだしも、iが増えるにつれ爆発的に答えが増えてしまうのでC++を用いた回答を試みました。 // _vi -> 解答書き込み先 // vi -> 解答候補 // 一つの"1"を最高位に固定して後ろに next_permutation から作成した"1"(i-1個)と"0"(i個)からなる順列を付加 // 数値を用いて考えているのでなんとなく桁が分からなくならないように最高位に"1"を固定した // i -> "1"と"0"それぞ...
by m3908714035
4年前
フォーラム: C言語何でも質問掲示板
トピック: 同じものを含む円順列の生成
返信数: 3
閲覧数: 2230

Re: 同じものを含む円順列の生成

回答ありがとうございます。
t.find(s) == string::npos がイマイチぴんと来ていないのですが、t内でsが含まれるイテレータの位置=string::findで値が見つからなかった場合に返す値(-1)⇔t内にsはないという認識でよいのでしょうか。
by m3908714035
4年前
フォーラム: C言語何でも質問掲示板
トピック: 同じものを含む円順列の生成
返信数: 3
閲覧数: 2230

同じものを含む円順列の生成

同じものを含む円順列を列挙したいです。
重複するものがなければ、高校数学的に一つを固定してnext_permitationでforしていけば円順列を作ることができますが、重複するものが出てくるとそう簡単には解けませんでした。
想定しているのは入力"111111000000(文字列, 桁数は30くらいまで)"を並び替えて円順列を出力するというものです。
自身で考えてはみたものの、さっぱりアイデアが思い浮かびません。
全て列挙して一つ一つ文字を右へずらし、ほかのものと被れば消去ということは考えましたが、当たり前のように時間がかかってしまいました。
良い方法があればご教示いただけると幸いです。
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: 連番ファイルをランダムに読み込む方法
返信数: 8
閲覧数: 3283

Re: 連番ファイルをランダムに読み込む方法

かずま さんが書きました:
5年前
100個のファイルのうち、ランダムにどれか一つ読み込めばよいのかと
思っていました。
すみません。仰る通りかもしれません。コードの修正等ありがとうございます。
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: templateの明示的特殊化・intXXX_t型 について
返信数: 8
閲覧数: 4587

Re: templateの明示的特殊化・intXXX_t型 について

回答ありがとうございます。nt型等は環境のビット数に依存すると聞き、intXXX_t型の使用を考えました。まあ、intXXX_t型も少なくともXXXビットの整数を保証しているだけなのですが。
ただ、そこまで環境によって困ったこともありませんし、基本形の方が良いんですかね…。
その点は今一度考えてみます。
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: templateの明示的特殊化・intXXX_t型 について
返信数: 8
閲覧数: 4587

Re: templateの明示的特殊化・intXXX_t型 について

余談ではありますが、main部分にint_fast16_t i; in() >> i; out() << i << "\n";とすると、 error: prog.cc: In function 'int main()': prog.cc:39:43: error: ambiguous overload for 'operator<<' (operand types are 'out' and 'const char [2]') 39 | int_fast16_t i; in() >> i; out() << i << "\n"; | ~~~~~~~~~~ ^~ ~~~~ | | | | out...
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: templateの明示的特殊化・intXXX_t型 について
返信数: 8
閲覧数: 4587

templateの明示的特殊化・intXXX_t型 について

以前別トピック「 scanf を簡略化したい 」で質問させていただいた者です。コードを書いている中でscanfの簡略とは異なった点で疑問が生じましたので、新しくトピックを立てさせていただきます。 code: struct in { template<typename typ> in& operator>>(typ& val) { std::cin >> val; return *this; } template<> in& operator>>(char& val) { std::scanf(" %c", &val); return *this; } template<> in& operat...
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: scanf を簡略化したい
返信数: 12
閲覧数: 6010

Re: scanf を簡略化したい

usao さんが書きました:
5年前
単純にオブジェクトを1個作ってその名前を公開しておけば良いのではないかと.
(cinだって,単に cinという名前のグローバルなオブジェクトが存在しているだけでしょうから)
cinの定義をiostrean->iosfwd->istreamと辿ってみると、おっしゃる通りでした。教えて下さりありがとうございます。
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: scanf を簡略化したい
返信数: 12
閲覧数: 6010

Re: scanf を簡略化したい

ところで、本当に scanf は速いんでしょうか? 実行時に書式を解釈しないといけないので遅くなるような気がします。 まあ、実装に依存するんでしょうね。 fgetc や fgets は cin >> c や getline(cin, s) より速そうですが、 getline は、string s なので、サイズの制限がありませんよね。 動的にメモリを確保するから遅いのではありませんか? 下記リンク先からの引用となります。 C/C++ におけるデータ入力の速度 1000 万行のテキストファイルを C/C++ で作成したプログラムで読み込むとき,どのくらいの時間がかかるかを調べた結果です。 キャ...
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: 連番ファイルをランダムに読み込む方法
返信数: 8
閲覧数: 3283

Re: 連番ファイルをランダムに読み込む方法

※追記
今回はランダムに読み込みたいとのことでしたので、読み込むファイルを疑似乱数を用いてランダムにしましたが、差し支えないようなら素直に1.txtから100.txtまでをvector配列に入れてシャッフルしても良いと思います。まあ、シャッフルするのが先か後かという違いだけだとは思いますが…。
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: 連番ファイルをランダムに読み込む方法
返信数: 8
閲覧数: 3283

Re: 連番ファイルをランダムに読み込む方法

txtファイルの中身が分からないので、とりあえず1.txtから100.txtまでに1.txtなら1、2.txtなら2、100.txtなら100と記入されていることを前提にプログラムを組んでみました。 code: #include <iostream> #include <random> #include <vector> #include <numeric> #include <string> #include <fstream> #include <sstream> using namespace std; int main() { random_device rnd; // 非決定的な乱数...
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: scanf を簡略化したい
返信数: 12
閲覧数: 6010

Re: scanf を簡略化したい

class IN { public: template< class T > IN &operator>>( T &V ){ std::cin >> V; return *this; } template<> IN &operator>>( int &V ){ scanf( "%d", &V ); return *this; } }; このような書き方をするとcinと似た形で使えるんですね。回答ありがとうございます。 本題とは少しずれるのですが、cinはiostreamをインクルードしてstd::cin>>s;のように使えますが、 今回提示いただいたコードだと一度IN inと宣言が入ってから...
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: scanf を簡略化したい
返信数: 12
閲覧数: 6010

Re: scanf を簡略化したい

なるほど。マクロを使うという手があったんですね。
とても助かりました。ありがとうございました。
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: scanf を簡略化したい
返信数: 12
閲覧数: 6010

Re: scanf を簡略化したい

「C++ テンプレート 特殊化」でググって最初に出てきた テンプレートの特殊化 | Programming Place Plus C++編【言語解説】 第23章 を参考に、こんな感じでしょうか。 … 回答ありがとうございます。テンプレートの特殊化に関して使い方が分かった気がします。 書いていただいたコードの入力書式のパターンを増やそうとすると using uint = unsigned int; using lint = long; using ushort = unsigned short; using ulong = unsigned long; template<typename va...
by m3908714035
5年前
フォーラム: C言語何でも質問掲示板
トピック: scanf を簡略化したい
返信数: 12
閲覧数: 6010

scanf を簡略化したい

~標準入力 を簡略化(?)する関数の作成について~ 最近になってiostreamよりもcstdioでの標準入出力が速いことを知りました。 そこで以下のような関数の作成をしようとしています。 関数inの<>内のクラスによって挙動が変わり、in<int>であれば関数の中身が int temp; scanf("%d", &temp); return temp; in<char>であれば関数の中身が char temp; scanf("%c", &temp); return temp; in<string>であれば関数の中身が string temp; cin >> temp; return temp...

詳細検索ページへ移動する