前提・実現したいこと
AtCoderのABC233のC問題について
模範解答とほぼ同じコードを書いているのに自分のコードだけエラーを吐きます。
模範解答と自分のコードのどこが違うのかを知りたいです。
問題ページ
発生している問題・エラーメッセージ
終了コード139 おそらくスタックオーバーフローが起きてます
該当のソースコード
自分のコード
C++
1#include <bits/stdc++.h> 2using namespace std; 3typedef long long ll; 4 5ll result = 0; 6ll n, x; 7vector<vector<ll>> v; 8void dfs(ll index, ll product) { 9 if (index == n) { 10 if (product == x) { 11 result++; 12 return; 13 } 14 } 15 16 for (ll a : v[index]) { 17 if (product * a < x) { 18 dfs(index + 1, product * a); 19 } 20 } 21} 22 23signed main() { 24 cin >> n >> x; 25 v.resize(n); 26 ll l; 27 for (ll i = 0; i < n; i++) { 28 cin >> l; 29 v[i].resize(l); 30 for (ll j = 0; j < l; j++) { 31 cin >> v[i][j]; 32 } 33 } 34 35 dfs(0, 1); 36 cout << result << endl; 37}
模範解答
c++
1#include<bits/stdc++.h> 2using namespace std; 3typedef long long ll; 4 5ll ans = 0; 6ll n,x; 7vector<vector<ll>>a; 8void dfs(ll pos,ll seki){ 9 if(pos==n){ 10 if(seki == x)ans++; 11 return; 12 } 13 for(ll c:a[pos]){ 14 if(seki>x/c)continue; 15 dfs(pos+1,seki*c); 16 } 17} 18 19signed main(){ 20 cin>>n>>x; 21 a.resize(n); 22 for(ll i=0;i<=n-1;i++){ 23 ll L;cin>>L; 24 a[i].resize(L); 25 for(ll j=0;j<=L-1;j++)cin>>a[i][j]; 26 } 27 dfs(0,1); 28 cout<<ans<<endl; 29 return 0; 30} 31
試したこと
自分のコードがエラーを吐くので少しずつ模範解答に寄せましたがエラーが消えません
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/28 15:41
2021/12/28 15:46
2021/12/28 15:54