2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
गतिशीलप्रोग्रामिंगस्य मूलविचारः अस्ति यत् समस्यां लघु उपसमस्यासु विघटयित्वा उपसमस्यानां समाधानं संग्रहीतुं शक्यते येन पुनः पुनः गणना न भवति
सरणीdp[i][j]
प्रयोगात् पूर्वं इत्यर्थःi
भारेन यः भारः तौलितुं शक्यते सःj
मात्रा
अद्यतनप्रक्रिया निम्नलिखितरूपेण अस्ति ।
1. आरंभीकरण: dp [0] [0] = 0;
2. प्रत्येकं भारस्य कृते wi:
- #include<bits/stdc++.h>
- typedef long long ll;
-
- #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
- const ll M=2e5+10;
- const int N=110;
- int dp[N][M]={0};
- using namespace std;
-
- int main()
- {
- IOS;
- int n,num=0;
- cin>>n;
- int w[N];
- ll ans=0;
- for(int i=1;i<=n;i++)
- {
- cin>>w[i];
- num+=w[i];
- }
- dp[0][0]=1;
- for(int i=1;i<=n;i++)
- {
- for(int j=0;j<=num;j++)
- {
- dp[i][j] = dp[i-1][j] + dp[i-1][abs(j-w[i])] + dp[i-1][j+w[i]];
- //cout<<dp[i][j]<<" ";
- }
- //cout<<endl;
- }
-
- for(int i=1;i<=num;i++)
- {
- if(dp[n][i]) ans++;
- }
- cout<<ans;
- return 0;
- }