1423 a spliting window but hard to recognize...
This commit is contained in:
		
							
								
								
									
										69
									
								
								1423-231205-pass/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								1423-231205-pass/main.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| #include<stdcpp.h> | ||||
| using namespace std; | ||||
| class Solution { | ||||
| public: | ||||
|     int maxScore1(vector<int>& cardPoints, int k) { | ||||
|         const int len = 1e5+10; | ||||
|         const int siz = cardPoints.size(); | ||||
|         int h2t_state[len][2]= {}, t2h_state[len][2] = {}; | ||||
|         h2t_state[0][1] = cardPoints[0]; | ||||
|         t2h_state[siz-1][1] = cardPoints[siz - 1]; | ||||
|         for(int i = 2 ; i <= k ; i++){ | ||||
|             int idx = i%2; | ||||
|             for(int j = 0 ; j < i ; j++){ | ||||
|                 // h2t_state[j][idx] = t2h_state[siz-j-1][1-idx] + cardPoints[j]; | ||||
|                 // t2h_state[siz-j-1][idx] = h2t_state[j][1-idx] + cardPoints[siz-j-1]; | ||||
|                 if(j == 0){ | ||||
|                     h2t_state[j][idx] = t2h_state[siz - i + 1][1-idx] + cardPoints[j]; | ||||
|                     t2h_state[siz-j-1][idx] = h2t_state[ i - 2 ][1-idx] + cardPoints[siz-j-1]; | ||||
|                 }else{ | ||||
|                     h2t_state[j][idx] = h2t_state[j-1][1-idx] + cardPoints[j]; | ||||
|                     t2h_state[siz-j-1][idx] = t2h_state[siz-j][1-idx] + cardPoints[siz-j-1]; | ||||
|                 } | ||||
|             } | ||||
|             // cout<<"i: "<<i<<endl; | ||||
|             // for(int j = 0 ; j < siz ; j++){ | ||||
|             //     cout<<h2t_state[j][idx]<<' '<<t2h_state[j][idx]<<' '; | ||||
|             //     cout<<h2t_state[j][1-idx]<<' '<<t2h_state[j][1-idx]<<endl; | ||||
|             // } | ||||
|             // cout<<"======"<<endl; | ||||
|         } | ||||
|         // cout<<"++++++++"<<endl; | ||||
|         int rlt = -1; | ||||
|         for(int i = 0 ; i < siz ; i++){ | ||||
|             rlt = max(rlt,h2t_state[i][k%2]); | ||||
|             rlt = max(rlt,t2h_state[i][k%2]); | ||||
|             // cout<<h2t_state[i][k%2]<<' '<<t2h_state[i][k%2]<<endl; | ||||
|         } | ||||
|         // cout<<"done"<<endl; | ||||
|         return rlt; | ||||
|     } | ||||
|     int maxScore(vector<int>& cardPoints, int k){ | ||||
|         int sum = 0; | ||||
|         int ans = 0; | ||||
|         int sz = cardPoints.size(); | ||||
|         for(int i = 0 ; i < k ; i++) sum+=cardPoints[i]; | ||||
|         ans = sum; | ||||
|         for(int i = 0 ; i < k ; i++){ | ||||
|             sum-=cardPoints[k - i - 1]; | ||||
|             sum+=cardPoints[sz - 1 - i]; | ||||
|             ans = max(ans, sum); | ||||
|             cout<<sum<<endl; | ||||
|         } | ||||
|         return ans; | ||||
|     } | ||||
| }; | ||||
| int main(){ | ||||
|     Solution sol; | ||||
|     vector<int> ex1 = {1,2,3,4,5,6,1}; | ||||
|     int k1 = 3; | ||||
|     cout<<sol.maxScore(ex1,k1)<<endl; | ||||
|  | ||||
|     vector<int> ex2 = {2,2,2}; | ||||
|     int k2 = 2; | ||||
|     cout<<sol.maxScore(ex2,k2)<<endl; | ||||
|  | ||||
|     vector<int> ex3 = {9,7,7,9,7,7,9}; | ||||
|     int k3 = 7; | ||||
|     cout<<sol.maxScore(ex3,k3)<<endl; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user