
No.3ベストアンサー
- 回答日時:
/* 1~nまでのの順列の並びを表示する */
#include <stdio.h>
#define N 10
#define USED 0
void Permutation(int level);
void display(void);
int selectList[N];
int AnswerList[N];
void main(void){
int i,Level=0;
for(i=0;i<N;i++){
AnswerList[i]=0; /* 多分必要ない */
selectList[i]=i+1; /* selectList[]={1,2,3,4,5,6,7,8…,N }; */
}
Permutation(Level);
}
void Permutation(int level){
int i,pos;
if(level == N){
display();
return ;
}
for(i=0;i<N;i++){
if(USED==(pos=selectList[i]))continue;
AnswerList[level]=pos;
selectList[i]=USED; /* 選択した数を使用済みにする */
Permutation(level + 1);
selectList[i]=pos; /* 次のループの為に戻す */
}
}
void display(void){
int i;
printf("[ ");
for(i=0;i<N;i++)
printf("%d ",AnswerList[i]);
printf("]\n");
}
実際に実行してみるには、Nをもっと小さくした方がいいかもです
数値でなくて、記号(1文字)でやる場合には、
参考URLを見て下さい。
http://okweb.jp/kotaeru.php3?qid=1038917
参考URL:http://okweb.jp/kotaeru.php3?qid=1038917
No.2
- 回答日時:
やり方はいろいろあります。
まず、どんな方法でやったら順列生成できるか考えてください。やり方の一例です。(解説はしません)
#include <stdio.h>
#define N 5
int p[N];
/* 数値を入れ替える */
void swap(int *a, int *b) {
int t;
t= *a; *a= *b; *b=t;
}
/* 数字を表示する */
void printN(void) {
int i;
for (i=0; i<N; i++) {
printf("%d ",p[i]);
}
printf("\n");
}
/* 入れ替えながら再帰 */
void perm(int n) {
int i;
if (n==0) {
printN();
} else {
perm(n-1);
for (i=n-1; i>=0; i--) {
swap(&p[n],&p[i]); perm(n-1); swap(&p[n],&p[i]);
}
}
}
int main(void) {
int i;
for (i=0; i<N; i++) p[i]=i+1; /* pに1からNまでの数字をセット */
perm(N-1);
return 0;
}
No.1
- 回答日時:
こちらが、参考になるかと・・・
http://www.altum.jp/math/exp1/task/perm.c
http://www.sra.co.jp/people/miyata/algorithm/gen …
参考URL:http://www.altum.jp/math/exp1/task/perm.c,http://www.sra.co.jp/people/miyata/algorithm/gen …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- その他(プログラミング・Web制作) プログラミングの問題です。プログラミングの空白に入るのは写真の通りであってますか?間違ってたらどこを 2 2022/06/18 22:31
- Ruby プログラミング 3 2023/06/09 14:30
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 malloc 関数を使って教えてください。 入出力例1 3 2022/07/21 09:36
- C言語・C++・C# プログラミングの問題です。写真のプログラムの1から10を下のように入力しましたがプログラムが上手くい 3 2022/07/01 23:31
- C言語・C++・C# 整数1〜99を入力させ、それを英語で表示するプログラムを作成したいんですが、そのプログラミングを教え 4 2023/04/28 14:12
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- C言語・C++・C# プログラミング実行後の表示される値を答えよ #include<stdio.h> void main( 7 2022/05/20 00:07
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語マップ探査ゲーム プログ...
-
C言語をお願いします
-
ヒープ木の格納 【プログラミ...
-
C言語での引数の省略方法
-
C++/Cこういうことは可能でしょ...
-
【C++】関数ポインタの使い方
-
return 1L
-
公約数のプログラム。
-
C++ グラフ作成
-
NULLの場合のint変数への代入
-
【C言語】関数へのポインタ渡し
-
cinの区切り文字の書き方
-
c言語
-
C言語 行列の和
-
C言語で、数値の桁数を求めるに...
-
VB.NETからC++のdll連携(double)
-
深さ優先探索について・・・
-
C#でmCnの求め方について 階乗...
-
C言語のアルゴリズム、マージソ...
-
入力を待たずにstdinの監視をし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
ラップ関数とはどんなものですか?
-
C言語 エラーの原因がわからな...
-
(int *)の意味
-
【C++】関数ポインタの使い方
-
if と配列の組み合わせ
-
構造体の勉強中です 合計点の高...
-
windows-findstrの正規表現を使...
-
C言語で分からないところがあり...
-
int型の変数値をバイト列として...
-
PowerShellがうまくいかない
-
C言語での奇数の和
-
「{ } で囲むだけ」は正しい?
-
std::set<int> で、ある値が何...
-
実数の整数部,小数部の取得
-
エラー 添字が付けられた値が、...
-
int16_t の _t は何?
おすすめ情報