O(1) 的小乐

Job Hunting

公告

记录我的生活和工作。。。
<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

  • 随笔 - 182
  • 文章 - 1
  • 评论 - 41
  • 引用 - 0

留言簿(10)

随笔分类(70)

随笔档案(182)

文章档案(1)

如影随形

搜索

  •  

最新随笔

最新评论

阅读排行榜

评论排行榜

USACO 2.3 Zero Sum

/*
ID: lvxiaol3
LANG: C++
TASK: zerosum
*/
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
#include <cmath>
#include <sstream>
using namespace std;
int process(string ss)
{
    string s;
    for(int i=0;i< ss.size();i++) if(ss[i]!=' ') s+=ss[i];
    int ret=0;
    istringstream k;
    k.str(s);
    int a;
    k>>a;
    ret+=a;
    char p;
    while(k>>p)
    {
        k>>a;
        if(p=='+') ret+=a;
        if(p=='-') ret-=a;
    }
    return ret;
}
int main()
{
    ifstream fin("zerosum.in");
    ofstream fout("zerosum.out");
    int N;
    fin>>N;
    vector<string> res;
    for(int i=0;i<pow(3.0,N-1.0);i++)
    {
        int m=i;
        string exp="1";
        for(int j=2;j<=N;j++)
        {
            if(m%3==0){  exp+="+";exp+='0'+j;}
            if(m%3==1){  exp+="-";exp+='0'+j;}
            if(m%3==2){  exp+=" ";exp+= '0'+j;}
            m/=3;
        }
        if(process(exp)==0)  res.push_back(exp);
    }
    sort(res.begin(),res.end());
    for(int i=0; i< res.size(); i++) fout<< res[i]<<endl;
    return 0;
}

枚举3进制,或者dfs来获得每一个字符串,然后单独处理。

 

// 重新启用这个blog,记录一些做过的东西。。。

posted on 2011-10-19 21:27 Sosi 阅读(160) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


统计系统