ulvis.paste.net

Paste Search Dynamic
Recent pastes
gesu
  1. #include<stdio.h>
  2. using namespace std;
  3. int n;
  4. char a[60];    
  5. int ans[11];
  6. void go(int ch,int sum,int gesu){
  7.                 if(gesu==n){
  8.                 for(int i=0;i<n;i++){printf("%d ",ans[i]);}
  9.                 printf("\n");
  10.                 }
  11.     if(ch==(n*(n+1))/2){
  12.         for(int i=0;i<n;i++){printf("%d ",ans[i]);}
  13.         return ;
  14.     }
  15.     if(gesu==n){
  16.         sum=0;
  17.         for(int i=ch/n;i<ch/n+ch%n;i++){
  18.             sum+=ans[i];
  19.         }
  20.         if(a[ch]=='0' && sum == 0){
  21.             go(ch+1,sum,gesu);
  22.         }
  23.         else if(a[ch]=='-' && sum < 0){
  24.             go(ch+1,sum,gesu);
  25.         }
  26.         else if(a[ch]=='+' && sum > 0){
  27.             go(ch+1,sum,gesu);
  28.         }
  29.     }
  30.     else{
  31.                 for(int i=-10;i<=10;i++){
  32.         if(a[ch]=='0' && (sum+i == 0)){
  33.             ans[gesu]=i;
  34.             go(ch+1,sum+i,gesu+1);
  35.             break;
  36.         }
  37.         else if(a[ch]=='-' && sum+i <0){
  38.             ans[gesu]=i;
  39.             go(ch+1,sum+i,gesu+1);
  40.  
  41.         }
  42.         else if(a[ch]=='+' && sum+i >0){
  43.             ans[gesu]=i;
  44.             go(ch+1,sum+i,gesu+1);
  45.  
  46.         }
  47.     }
  48.     }
  49. }
  50. int main (void){
  51.     scanf("%d",&n);
  52.     scanf("%s",a);
  53.  
  54.     go(0,0,0);
  55.  
  56.     return 0;
  57. }
Parsed in 0.012 seconds