示例#1
0
文件: blackjack.c 项目: pcurry/ABGtoC
/************************************************************
C's program execution always begins here, at main(). */
main() {
  int numCards; /* Equals 52 at the beginning of each game. */
  int cards[52], playerPoints[2], dealerPoints[2], total[2];
  char ans; /* for user's Hit/Stand or Yes/No response. */
  do {
    initCardsScreen(cards, playerPoints, dealerPoints, total, &numCards);
    dealerGetsCard(&numCards, cards, dealerPoints);
    printf("\n");  /*  Prints a blank line */
    playerGetsCard(&numCards, cards, playerPoints);
    playerGetsCard(&numCards, cards, playerPoints);
    do {
      ans = getAns("Hit or stand (H/S)? ");
      if (ans == 'H') {
	playerGetsCard(&numCards, cards, playerPoints);
      }
    } while (ans != 'S');
    /* Generate player's total score once the player stands. */
    totalIt(playerPoints, total, PLAYER);
    do {
      dealerGetsCard(&numCards, cards, dealerPoints);
    } while (dealerPoints[ACEHIGH] < 17);
    /* Dealer has to stand at 17. */
    totalIt(dealerPoints, total, DEALER);
    /* Calculate the dealer's hand total. */
    findWinner(total);
    ans = getAns("\nPlay again (Y/N)? ");
  } while (ans == 'Y');
  return;
}
示例#2
0
double getScilabVar(char *varname) {
  // Try to solve it locally
  char *s;
  double d=strtod(varname,&s);
  if (varname+strlen(varname)==s)
    return d;
  initScilab();
  char buf[1024];
  double f;
  if (!scilabActive) {
     printLog("There is not a Scilab instance running. Returning atof(%s)\n",varname); 
     exitStatus = -1;
     return atof(varname); 
  }	  
  sprintf(buf,"anss=%s",varname);
  executeScilabJob(buf,false);
  executeScilabJob("exists anss",false);
  getAns(&f,1,1);
  if (!scilabActive) {
     printLog("There is not a Scilab instance running. Returning atof(%s)\n",varname); 
     exitStatus = -1;
     return atof(varname); 
  }	  
  if (f==0) {
     printLog("Variable %s does not exists!\n",varname); 
     exitStatus = -1;
     return 0.0; 
  }
  executeScilabJob("ans=anss",false);
  getAns(&f,1,1);
  executeScilabJob("clear anss",false);
  return f;
}
示例#3
0
void build(int f, int t, int x){
	len[x] = t - f + 1;
	tag[x] = Tag(-1, -1);
	if(f == t){
		data[x] = Data(1, 1, 1, 1, 0);
	}else{
		build(f, mid, ls);
		build(mid + 1, t, rs);
		data[x] = getAns(ls) + getAns(rs);
	}
}
示例#4
0
int getSum(int f, int t, int x){
	if(f != t)
		push(x);
	if(f == t){
		return f;
	}else{
		if(getAns(ls).sum < X){
			X -= getAns(ls).sum;
			return getSum(mid + 1, t, rs);
		}else
			return getSum(f, mid, ls);
	}
}
示例#5
0
文件: a.cpp 项目: xhae/Contests
int getAns(int n, int from, int left, int tar) {
	if(left == 0) {
		if(tar == 0) return 1;
		return 0;
	}
	if(tar == 0) return 0;
	if(from > n) return 0;

	int &ret = dp[n][from][left][tar];
	if(ret != -1) return ret;

	ret = getAns(n, from + 1, left, tar);
	if(from <= tar) ret += getAns(n, from + 1, left - 1, tar - from);
	return ret;
}
示例#6
0
文件: a.cpp 项目: xhae/Contests
int main(void) {
	memset(dp, -1, sizeof(dp));
	while(scanf("%d %d %d", &n, &K, &s), n > 0)
		printf("%d\n", getAns(n, 1, K, s));

	return 0;
}
示例#7
0
void Get(){
	scanf("%d", &X);
	if(X > getAns(1).sum)
		puts("Reject Get");
	else
		printf("Get at %d\n", getSum(1, N, 1));
}
示例#8
0
文件: Client.cpp 项目: jonquach/zappy
void	Client::checkLvlUp()
{
  if (_ans.find("niveau") < _ans.size())
    _lvlUp = true;
  else if (_lvlUp == false)
    getAns();
}
void ConsoleWriter::print(int n, int **array){

    int *ans = getAns(n, array);
    for(int i = 0; i < n * n - 1; i++)
        std::cout << ans[i] << " ";
    std::cout << std::endl;
    delete[] ans;
}
示例#10
0
文件: Client.cpp 项目: jonquach/zappy
bool Client::startLoop()
{
  while (_step != GAME_STEP)
    if (getAns() == false)
      return false;
  startAI();
  return true;
}
示例#11
0
文件: we3.cpp 项目: nasWang/test
void getAns(vector<vector<char> >& maz, vector<vector<int> >& mat, int m, int n, int i, int j, int tmp, int flag){
	if(i==m-1 && j==n-1) return;
	if(maz[i][j]=='b'){
		mat[i][j]=min(mat[i][j],tmp+1);
		if(flag!=0) if(i<m-1) getAns(maz, mat, m, n, i+1, j,tmp+1, (flag+1)%2);
		if(flag==0) if(j<n-1) getAns(maz, mat, m, n, i, j+1,tmp+1, (flag+1)%2));
		return;
	}
int getAns(int l,int r)
{
    if(l>r)return 0;
    int MIN=10010,pos=-1;
    for(i=l;i<=r;i++)
    {
        if(a[i]<MIN)
        {
            MIN=a[i];
            pos=i;
        }
    }
    for(i=l;i<=r;i++)
    {
        a[i]-=MIN;
    }
    return MIN+getAns(l,pos-1)+getAns(pos+1,r);
}
示例#13
0
void push(int x){
	if(tag[x].f == -1 && tag[x].t == -1)
		return;
	data[x] = getAns(x);
	tag[ls] = tag[rs] = tag[x];
	head[ls] = head[x];
	head[x] = head[rs] = 0;
	tag[x] = Tag();
}
示例#14
0
void New(){
	scanf("%d", &X);
	if(getAns(1).m >= X){
		getRange(1, N, 1);
		printf("New at %d\n", l);
		cover(1, N, 1);
	}else
		puts("Reject New");
}
int main()
{
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("%d\n",getAns(1,n));
    return 0;
}
示例#16
0
void cover(int f, int t, int x){
	if(f != t)
		push(x);
	if(l <= f && t <= r){
		if(!strcmp(buffer, "New")){
			tag[x] = Tag(l, r);
			head[x] = (l == f);
		}
		if(!strcmp(buffer, "Free")){
			tag[x] = Tag(0, 0);
			head[x] = -(l == f);
		}
	}else{
		if(l <= mid)
			cover(f, mid, ls);
		if(r > mid)
			cover(mid + 1, t, rs);
		data[x] = getAns(ls) + getAns(rs);
	}
}
示例#17
0
文件: Client.cpp 项目: jonquach/zappy
void Client::writeToSocket(std::string const &buffer)
{
  int len = buffer.size();
  int len2;

  len2 = 0;
  if (_step == GAME_STEP)
    ++_nbCmd;
  std::string buff(buffer);

  if (!buff.empty() && buffer[buff.length() - 1] == '\n')
    buff.erase(buff.length() - 1);

  std::cout << "\033[1;34m[CLIENT] Sending message : " << buff << "\033[0m"
	    << std::endl;

  while (len2 < len)
    {
      if ((len2 += write(_socket, buffer.c_str() + len2, len)) == -1)
	throw NException("Error : write failed");
    }
  if (_step == GAME_STEP)
    {
      refreshTime();
      getAns();
      if (_messages.size() == 0 && _regroupMessage.size() > 3
	  && _reading == false)
	{
	  _reading = true;
	  readMessage(_regroupMessage);
	  _reading = false;
	  _regroupMessage.clear();
	}
      if (_messages.size() > 0 && _reading == false)
	{
	  std::cout << "READING" << std::endl;
	  _reading = true;
	  for (size_t i = 0; i < _messages.size() ; ++i)
	    readMessage(_messages[i]);
	  _messages.clear();
	  if (_regroupMessage.size() > 3)
	    readMessage(_regroupMessage);
	  _regroupMessage.clear();
	  std::cout << "CLEAR" << std::endl;
	  _reading = false;
	  std::cout << "STOP READING" << std::endl;
	  std::cout << "TIME: " << _time << std::endl;
	}
    }
}
示例#18
0
void dfs(int x){
    if(x == n){
        ans = min(ans,getAns());
        return;
    }
    for(int i = 0;i < n;i++){
        if(vis[i])
            continue;
        ord[i] = x;
        vis[i] = 1;
        dfs(x+1);
        vis[i] = 0;
    }
}
示例#19
0
文件: Client.cpp 项目: jonquach/zappy
bool	Client::checkAns()
{
  checkBroadcast();
  if (_ans.find("niveau") >= _ans.size())
    {
      if (_lastCommand == INVENTORY && checkInventory() == false)
	getAns();
      else if (_lastCommand == BASIC && _ans != "ok" && _ans != "ko")
	{
	  getAns();
	}
      else if (_lastCommand == INCANTATION && _ans != "ko")
	checkLvlUp();
      else if (_lastCommand == LOOK && _ans.at(_ans.length() - 1) != '}'
	       && _ans.at(0) != '{')
	return true;
    }
  else if (_lvlUp == false)
    {
      _lvlUp = true;
      ++_lvl;
    }
  return false;
}
示例#20
0
thing dfs(int x, int pre){
	thing ret;
	ret.X = &buf[x];
	(*ret.X)[c[x]] = 1;
	ret.Y = newNode(1);
	for(int i = 0;i < int(g[x].size());++ i){
		if(g[x][i] != pre){
			ret = merge(ret, dfs(g[x][i], x));
		}
	}
	for(int i = 0;i < int(q[x].size());++ i){
		ans[q[x][i]] = ret.Y->sz - getAns(ret.Y, k[q[x][i]]);
	}
	return ret;
}
示例#21
0
文件: g1.cpp 项目: bottomcoder/tc
int main(void)
{
	int T;
	scanf("%d", &T);
	while(T--)
	{
		scanf("%d %s", &n, table);
		sn = 0;
		for(int i = 0; i < n; i++) if(table[i] == '1') sushi[sn++] = i;

		memset(dp, -1, sizeof(dp));
		if(getAns((1 << sn) - 1, 0) == 1) printf("Adam\n");
		else printf("Betka\n");
	}

	return 0;
}	
示例#22
0
文件: g1.cpp 项目: bottomcoder/tc
int getAns(int stat, int turn)
{
	int &ret = dp[stat][turn];
	if(ret != -1) return ret;

	ret = 0;
	for(int i = 0; i < sn; i++)
	{
		if((stat & (1 << i)) == 0) continue;
		int loc = sushi[i] - turn;
		if(loc < 0) continue;

		if(getAns(stat ^ (1 << i), turn + 1) == 0) ret = 1;
	}

	return ret;
}
int main()
{
    int n;
    init();
    while(~scanf("%d", &n))
    {
        long long a;
        countNumber = 0;
        for(int i=0;i<n;++i)
        {
            scanf("%lld", &a);
            divide(a);
        }
        printf("%lld\n", getAns());
    }
    return 0;
}
示例#24
0
void getRange(int f, int t, int x){
	if(f != t)
		push(x);
	if(getAns(x).m == getAns(x).s){
		l = f;
		r = l + X - 1;
		return;
	}
	if(getAns(ls).m >= X)
		return getRange(f, mid, ls);
	if(getAns(ls).r + getAns(rs).l >= X){
		l = mid - getAns(ls).r + 1;
		X -= getAns(ls).r;
		r = mid + X;
		return;
	}
	if(getAns(rs).m >= X)
		return getRange(mid + 1, t, rs);
}
示例#25
0
void Add(int fd_stdin,int fd_stdout)
{
	int fd;
	int n;
	char buf[80]={0};
	char wbuf[200]={0};
	char IsFirst = 0;
	int IsFinish = 0;
	while(!IsFinish)
	{

		printf("Please input the expression..\n");

		int r = read(fd_stdin, buf, 70);
		buf[r] = 0;

		char* ddd = getAns(&buf);
		printf("Answer : %s",ddd);
		printf("\n");
		IsFinish = 1;
	}
}
示例#26
0
文件: sgu168.cpp 项目: were/progs
int calc(int x, int y){
	return std::min(getAns(x, y + 1), std::min(getAns(x + 1, y), getAns(x - 1, y + 1)));
}