[BNDSOJ] 小P的数列代码
感谢gjznb大佬的帮助Orz
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=160; 4 vector<int> dp[N][N]; 5 bool book[8]; 6 int a[N]; 7 int n; 8 int main() 9 { 10 cin>>n; 11 for(int i=1;i<=n;i++) 12 { 13 cin>>a[i]; 14 dp[i][i].push_back(a[i]); 15 } 16 for(int l=1;l<=n;l++) 17 { 18 for(int i=1;i<=n-l;i++) 19 { 20 int j=i+l; 21 memset(book,0,sizeof(book)); 22 for(int k=i;k<j;k++) 23 { 24 for(int ii=0;ii<dp[i][j].size();ii++) 25 { 26 book[dp[i][j][ii]]++; 27 } 28 for(int ii=0;ii<dp[i][k].size();ii++) 29 { 30 for(int jj=0;jj<dp[k+1][j].size();jj++) 31 { 32 int to=(dp[i][k][ii]+dp[k+1][j][jj])/2; 33 if(book[to]==0) 34 { 35 dp[i][j].push_back(to); 36 book[to]=1; 37 } 38 } 39 } 40 } 41 } 42 } 43 for(int i=0;i<8;i++) 44 { 45 if(book[i]) cout<<i<<" "; 46 } 47 return 0; 48 }