コード //入力 int n, a[MAX_N]; void solve(){ int ans = 0; //答え //棒を重複して選ばないように、i<j<kとなるようにしている。 for (int i = 0; i < n; i++){ for(int j = i + 1; j < n; j++){ for (int k = j+1; k < n; k++){ int len = a[i] + a[j] + a[k]; //周長 int ma = max(a[i], max([a[j], a[k]]));//もっとも長い棒の長さ int rest = len - ma; if (ma < rest){ //三角形が作れるので、答えを更新できれば更新 ans = max(ans, len); } } } } //出力 printf("%d\n", ans); }
上記のコードは、プログラミングコンテストの参考書に載っていたもので、便宜的に入力が全てmain関数で読み込まれてグローバル変数に置かれたのち、関数solveが呼ばれることによって問題を解く形式で書かれています。
当の問題ですが、以下のようなものです。
<問題>
n本の棒があります。棒iの長さはa_iです。あなたは、それらの棒から3本を選んで、できるだけ酋長の長い三角形を作ろうと考えています。最大の周長を求めなさい。ただし、三角形が作れない場合には0を答えとしなさい。
<制約>3 <= n <= 100, 1 <= a_i <= 10**6
<例1>
<入力>n = 5
a = {2, 3, 4, 5, 10}
<出力>12(3, 4, 5の棒を選んだ)
<例2>
<入力>n = 4
a = {4, 5, 10, 20}
<出力>0(どれを選んでも三角形は作れない)
これを、ローカル環境で実行できる形に直そうとしたのが、以下のコードです。
コード //入力 #include <cstdio> #include<algorithm> using namespace std; const int MAX_N = 100; int main() { int n, a[MAX_N]; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } int ans = 0; //答え //棒を重複して選ばないように、i < j < kとなるようにしている for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { int len = a[i] + a[j] + a[k]; int ma = max(a[i], max(a[j] + a[k])); int rest = len - ma; if (ma < rest) { //三角形が作れるので、答えを更新できれば更新 ans = max(ans, len); } } } } printf("%d\n", ans); return 0; }
test16.cpp:25:36: error: no matching function for call to 'max'
int ma = max(a[i], max(a[j] + a[k]));
^~~
/Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:2709:1: note: candidate function template
not viable: requires 3 arguments, but 1 was provided
max(const _Tp& __a, const _Tp& __b, _Compare __comp)
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:2717:1: note: candidate function template
not viable: requires 2 arguments, but 1 was provided
max(const _Tp& __a, const _Tp& __b)
^
1 error generated.
と表示され、どうやらmaxという関数が定義されていないことが問題らしいのですが、
どう直せば実行できるのかどうしても分かりません。教えていただければ幸いです。
どうぞよろしくお願いいたします。
なお、ローカル環境とは、mac OS High Sierra10.13.6
コンパイラは
Apple LLVM version 10.0.0 (clang-1000.10.44.4)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
になります。VSCodeを使っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/17 12:32