प्रौद्योगिकी साझेदारी

कोड मकर एल्गोरिदम प्रशिक्षण शिविर दिवस 31 |

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1049. अन्तिमशिलायाः भारः II

तत्र शिलाराशिः अस्ति, पूर्णाङ्कानां सरणीं प्रयोजयन्तुstones व्यक्त।इत्यस्मिन्‌stones[i]प्रथमं सूचयतिiपाषाणस्य भारः ।

प्रत्येकं गोलं, चयनं कुर्वन्तुयत्किमपि द्वौ पाषाणौ , ततः तान् एकत्र मर्दयेत् ।पाषाणस्य भारः इति कल्पयतुxतथाy,तथाx <= y . अथ मर्दनस्य सम्भाव्यफलं यथा ।

  • यदिx == y, तदा उभौ पाषाणौ सम्पूर्णतया मर्दितौ भविष्यतः;
  • यदिx != y, अथ भारःxपाषाणस्य सम्पूर्णं मर्दनं कृत्वा तौलितं भविष्यतिyपाषाणस्य नवभारः अस्तिy-x

अन्ते, २.अधिकतया एकः एव खण्डः अवशिष्टः भविष्यति प्रस्तरं।अस्मिन् पाषाणे पुनः आगच्छन्तुलघुतमः सम्भवः भारः .यदि शिलाः न अवशिष्टाः सन्ति तर्हि प्रत्यागच्छन्तु0

उदाहरणम् १ : १.

输入:stones = [2,7,4,1,8,1]
输出:1
解释:
组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],
组合 2 和 1,得到 1,所以数组转化为 [1,1,1],
组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。

अस्य समसङ्ख्यायाः सह किमपि सम्बन्धः नास्ति, अतिस्मार्टः मा भवतु इति ज्ञातव्यम् ।

  1. class Solution {
  2. public:
  3. int lastStoneWeightII(vector<int>& stones)
  4. {
  5. vector<int> dp(3001,0);
  6. int sum = 0;
  7. for(int i = 0; i < stones.size() ; i ++)
  8. {
  9. sum += stones[i];
  10. }
  11. // if(sum % 2 == 0) return 0; 注意与偶数无关
  12. int target = sum/2;
  13. dp[0] = 0;
  14. for(int i = 0; i < stones.size() ; i++)
  15. {
  16. for(int j = target; j >= stones[i] ; j--)
  17. {
  18. dp[j] = max(dp[j],dp[j - stones[i]]+ stones[i]);
  19. }
  20. }
  21. return sum - dp[target] - dp[target];
  22. }
  23. };

494. लक्ष्याणि च

अऋणात्मकपूर्णाङ्कानां सरणीं ददातुnumsपूर्णाङ्कः चtarget 。

सरणीयां प्रत्येकस्य पूर्णाङ्कस्य पूर्वं योजयति'+'वा'-', ततः सर्वाणि पूर्णाङ्कानि संयोजयित्वा aअभिव्यक्ति :

  • उदाहरणतया,nums = [2, 1],अनुमतम्2पूर्वं योजितम्'+',अस्ति1पूर्वं योजितम्'-', ततः व्यञ्जनं प्राप्तुं संयोजितम्"+2-1" 。

उपर्युक्तविधिना निर्माणं कर्तुं शक्यते यस्य परिणामः तुल्यः भवति तत् फंक्शन् प्रत्यागच्छतिtargets भेदःअभिव्यक्तिसंख्या के ।

उदाहरणम् १ : १.

输入:nums = [1,1,1,1,1], target = 3
输出:5
解释:一共有 5 种方法让最终目标和为 3 。
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3
  1. class Solution {
  2. public:
  3. int findTargetSumWays(vector<int>& nums, int target)
  4. {
  5. vector<int> dp(1500,0);
  6. int sum = 0;
  7. for(int i = 0; i < nums.size() ; i++)
  8. {
  9. sum += nums[i];
  10. }
  11. if(abs(target) > sum) return 0;
  12. if((sum + target)%2 == 1) return 0;
  13. int mid = (sum + target)/2;
  14. dp[0] = 1;
  15. for(int i = 0; i < nums.size( ) ; i++)
  16. {
  17. for(int j = mid ; j >= nums[i] ; j--)
  18. {
  19. dp[j] += dp[j - nums[i]];
  20. }
  21. }
  22. return dp[mid];
  23. }
  24. };

474. एकाः शून्याः च

द्विचक्रीयतारानाम् एकं सरणीं ददातुstrsपूर्णाङ्कद्वयं चmतथाn 。

कृपया अन्विष्य प्रत्यागच्छstrsइत्यस्य बृहत्तमस्य उपसमूहस्य दीर्घताअधिकतमःअस्तिmindivual0तथाnindivual1 。

यदिxतथा सर्वे तत्त्वानि सन्तिyतत्त्वानि, संग्रहःxइति संग्रहःyइत्यस्यउपसमूह 。

उदाहरणम् १ : १.

输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3
输出:4
解释:最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是 4 。
其他满足题意但较小的子集包括 {"0001","1"} 和 {"10","1","0"} 。{"111001"} 不满足题意,因为它含 4 个 1 ,大于 n 的值 3 。
  1. class Solution {
  2. public:
  3. int findMaxForm(vector<string>& strs, int m, int n)
  4. {
  5. vector<vector<int>> dp(m+1,vector<int>(n+1,0));
  6. for(string str : strs)
  7. {
  8. int zero = 0;
  9. int one = 0;
  10. for(char c : str)
  11. {
  12. if(c == '0') zero++;
  13. else one++;
  14. }
  15. for(int i = m; i >= zero ; i--)
  16. {
  17. for(int j = n; j >= one; j--)
  18. {
  19. dp[i][j] = max(dp[i][j],dp[i - zero][j - one] + 1);
  20. }
  21. }
  22. }
  23. return dp[m][n];
  24. }
  25. };