⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usaco_zerosum.cpp

📁 usaco自己做的1到5章的代码
💻 CPP
字号:
/*
ID: wangyuc2
PROG: zerosum
LANG: C++
*/ 
#include <fstream>
#include <iostream>
#include <memory>
#include <algorithm>
using namespace std;
char s[20];
int sum,n;
ifstream fin("zerosum.in");
ofstream fout("zerosum.out");
bool check_char()
{
     sum=1;
     int i,t,j;
     for(i=1;i<=2*(n-1);i+=2)
     {
         switch(s[i]){
                      case '+':sum+=s[i+1]; break;
                      case '-':sum-=s[i+1]; break;
                      case ' ':t=s[i-1];j=0;
                               while(s[i+j]==' ')
                               {
                                  t=t*10+s[i+j+1];
                                  j+=2;
                               }
                               if(s[i-2]=='-')
                               {
                                   sum+=s[i-1];
                                   sum-=t;}
                               else{
                                   sum-=s[i-1];
                                   sum+=t;
                                   }
                               i+=j-2;
                               break;
                      }
     }
     if(sum==0) return true;
     else return false;
}

void search_char(int k)
{  
   int i;     
   if(k<=n)
   {
     s[2*(k-1)]=k;
     s[2*(k-1)-1]=' ';
     search_char(k+1);
     s[2*(k-1)-1]='+';
     search_char(k+1);
     s[2*(k-1)-1]='-';
     search_char(k+1);
   }
   else{
     //s[2*k-1]='\0';
     if(check_char()) {for(i=0;i<2*n-1;i++) if(s[i]<=9) fout<<(int)s[i];
                                         else fout<<s[i];
                       fout<<endl;}
     }
}

int main()
{   
  // int i,j,k;
   fin>>n;
   sum=1;
   s[0]=1;
   search_char(2);
   //system("PAUSE");
   return 0;
}

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -