No.3ベストアンサー
- 回答日時:
こんなのプログラム書けば一瞬で答えが出ますね:
#include <stdio.h>
#include <stdbool.h>
void
FindNum(int nums[], int num_nums, int level, int remains,
bool used[], bool no_same)
{
if (level < 0 || remains < 0)
return;
if (level == 0 && remains == 0) {
for (int i = 0; i < num_nums; ++i) {
printf("%d", nums[i]);
}
printf("\n");
return;
}
for (int i = 0; i < 10; ++i) {
if (no_same && used[i]) {
continue;
}
if (remains >= i) {
nums[num_nums] = i;
used[i] = true;
FindNum(nums, num_nums + 1, level - 1, remains - i, used, no_same);
used[i] = false;
}
}
}
void
FindCombination(int max_digits, int min_digits, int sum, bool no_same) {
int nums[max_digits];
for (int digits = max_digits; digits >= min_digits; --digits) {
bool used[10] = {false};
printf("Digits = %d, Sum = %d\n", digits, sum);
FindNum(nums, 0, digits, sum, used, no_same);
printf("\n");
}
}
int
main(void)
{
FindCombination(4, 2, 15, false);
FindCombination(4, 3, 31, false);
FindCombination(4, 3, 32, false);
return 0;
}
> bin-chanさんが質問していた同じ数字は使えない
> 等のしばりはどうします?とありましたが、しばりは
> なしで考えてくれればと思っています。
> あと、4ケタで31、32になる数字の組み合わせがあれば
> 教えていただけないでしょうか?
上記のプログラムによると、同じ数字を使えないという縛りを入れると、4桁で31, 32になる組み合わせは作れません。
同じ数字を許すと、こんな感じですね。
4桁で31になる組み合わせ:
4999
5899
5989
5998
6799
6889
6898
6979
6988
6997
7699
7789
7798
7879
7888
7897
7969
7978
7987
7996
8599
8689
8698
8779
8788
8797
8869
8878
8887
8896
8959
8968
8977
8986
8995
9499
9589
9598
9679
9688
9697
9769
9778
9787
9796
9859
9868
9877
9886
9895
9949
9958
9967
9976
9985
9994
4桁で32になる組み合わせ:
5999
6899
6989
6998
7799
7889
7898
7979
7988
7997
8699
8789
8798
8879
8888
8897
8969
8978
8987
8996
9599
9689
9698
9779
9788
9797
9869
9878
9887
9896
9959
9968
9977
9986
9995
..余談ですが、3桁で作れる和の最大値は9 * 3で27なので重複を許しても、31、32は無理ですよね。
No.2
- 回答日時:
三けたは無理
9+9+9=27が最高だからね。
6+8+8+9=31
6+8+9+9=32
は?
No.1
- 回答日時:
「同じ数字は使えない」等のしばりはどうします?
以下、組み合わせのみ、順序入れ替えは省略
2けたの数字で15:
69
78
3けたの数字で15:
159
168
249
258
267
348
357
456
4けたの数字で15:
1239
1248
1257
1347
1356
2346
3桁で31、32になる数字の組み合わせは無理。
題意の読み取りがまちがってるかも。
この回答へのお礼
お礼日時:2013/07/27 14:53
bin-chanさん、質問の回答ありがとうございます。
bin-chanさんが質問していた同じ数字は使えない
等のしばりはどうします?とありましたが、しばりは
なしで考えてくれればと思っています。
あと、4ケタで31、32になる数字の組み合わせがあれば
教えていただけないでしょうか?
お願いします(-_-)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 無理数の数字の組み合わせ。無限の意味について 5 2022/05/28 22:53
- 数学 これって正しいんじゃないの? 「無理数を小数で表現すると、小数点以下に数字が無限に続きますが、それら 5 2022/05/29 23:56
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- 数学 ロト6の当選確率 3 2022/06/09 22:47
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- 数学 iPhoneの画面を4桁の数字でロックする場合 パスワードの組み合わせは 0から9までの10種類の数 3 2023/05/26 11:25
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- その他(ソフトウェア) パソコンソフトのシリアルナンバー 4 2023/08/16 15:56
- その他(IT・Webサービス) HTML コンピューターについて 6 2022/07/12 16:37
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
「指定されたキャストは有効で...
-
卒業研究でよく分からないとこ...
-
複数桁10進数の*桁目だけを抽出...
-
c言語
-
#define _CRT_SECURE_NO_WARNIN...
-
if と配列の組み合わせ
-
C言語 エラーの原因がわからな...
-
int型の変数値をバイト列として...
-
std::set<int> で、ある値が何...
-
return 1L
-
C++ でカンマ "," で区切られた...
-
CでBAモデルを作りたいのですが
-
構造体の勉強中です 合計点の高...
-
VS2010C#からのDLL使用について
-
式は定数値が必要です」という...
-
因数分解を行うプログラムについて
-
ラップ関数とはどんなものですか?
-
「{ } で囲むだけ」は正しい?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
複数桁10進数の*桁目だけを抽出...
-
ラップ関数とはどんなものですか?
-
【C++】関数ポインタの使い方
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
system関数がうまくいかない
-
(int *)の意味
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
C言語初心者です、、、お助けく...
-
std::set<int> で、ある値が何...
-
PowerShellがうまくいかない
-
read関数をノンブロッキングで...
-
ColorをRGBで指定する方法
-
(マルチスレッド)_beginthrea...
-
数字列を3桁ごとにカンマで区切...
-
C言語で分からないところがあり...
おすすめ情報