栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2604 Little Brackets

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2604 Little Brackets

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <set>#include <vector>#include <cstdlib>#include <string>#define M0(a) memset(a, 0, sizeof(a))#define MXN 100010#define Inf 0xfffffusing namespace std;int n, m, cas;string f[55][55];int a[10000][2];inline void clear(string& a){ while(a.length()>0 && a[0]=='0') a.erase(0, 1); if(a == "") a = "0";} string stringAddString(string a, string b){ while(a.length() < b.length())  a = '0' + a; while(a.length() > b.length()) b = '0' + b;  a = '0' + a; b = '0' + b; for(int i=a.length()-1; i>=0; i--){ a[i] = a[i] + b[i] - '0'; if(a[i] > '9'){ a[i] = a[i] - 10; a[i-1] += 1; } }  clear(a); return a; }string stringMultString(string a, string b){ string result = "0"; if(a.length() < b.length()){ string buf = a; a = b; b = buf; }  for(int i=b.length()-1; i>=0; i--){ for(int j=0; j<b[i]-'0'; j++){ result = stringAddString(result, a); } a = a + '0'; } clear(result); return result; }string stringSubString(string a, string b){ bool aBigger = true; while(a.length() < b.length())  a = '0' + a; while(a.length() > b.length()) b = '0' + b;  if(a < b)  {  aBigger = false;  string buf = b;  b = a;  a = buf;  }  for(int i=a.length()-1; i>=0; i--){ if(a[i] >= b[i]){ a[i] = a[i] - (b[i] - '0'); }else{ a[i] = a[i] + 10; a[i-1] -= 1; a[i] = a[i] - (b[i] - '0'); } } clear(a); if(!aBigger)  a = '-' + a; return a; }void dp(){ for (int i = 0; i <= 50; ++i) for (int j = 0; j <= 50; ++j) f[i][j] = "0"; for (int i = 0; i <= 50; ++i) f[0][i] = "1"; for (int i = 1; i <= 50; ++i) for (int j = 1; j <= 50; ++j) for (int k = 1; k <= i; ++k) f[i][j] = stringAddString(f[i][j] , stringMultString(f[i-k][j] , f[k-1][j-1]));}int main(){ cas = 0; dp(); while (scanf("%d%d", &n, &m) != EOF){ if (n == 0) break; a[++cas][0] = n; a[cas][1] = m;  } for (int i = 1; i <= cas; ++i){ cout << "Case "<< i << ": "; n = a[i][0]; m = a[i][1]; cout << stringSubString(f[n][m], f[n][m-1]) << endl; if (i < cas) cout << endl; } fclose(stdin); fclose(stdout); }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号