#10034. 「一本通 2.1 例 2」图书管理(map容器)

题目:图书管理

信奥 提交链接

用map容器来写。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map> 
#include<iostream>
using namespace std;
map<string,int> q;
char x[10],name[30010];
int main()
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%s",x);
		getchar();
		scanf("%[^\n]",name);
		if(x[0]=='a')
			q[name]=1;
		else
		{
			if(q[name])
				printf("yes\n");
			else
				printf("no\n");
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个任务我可以帮你完成。我们可以按照以下步骤进行设计: 1. 首先需要过输入行数和列数来生成地图,我们可以使用二维字符数组来表示地图,其中字符“#”表示墙,字符“.”表示空地,字符“O”表示角色起始位置,字符“X”表示宝藏所在位置。 2. 在生成地图后,需要随机生成宝藏位置和角色起始位置。我们可以使用rand()函数生成两个不同的随机数作为宝藏和角色的坐标。 3. 接下来就是游戏的逻辑部分,需要循环读取玩家的输入,并根据输入来移动角色。如果角色移动到宝藏所在位置,则游戏结束,输出恭喜信息。 4. 在移动角色时,需要先判断移动后的位置是否越界,如果越界则不移动。如果不越界,则需要判断移动后的位置是否为墙,如果为墙则不移动。如果不是墙,则可以移动角色到该位置。 5. 在移动角色后,需要更新地图的显示,将原来的角色位置和宝藏位置改为“.”,将移动后的角色位置改为“O”,如果移动的位置是宝藏位置,则将该位置改为“$”。 下面是一个简单的代码实现,仅供参考: ```c++ #include <iostream> #include <cstdlib> #include <ctime> using namespace std; const int MAX_ROW = 10; const int MAX_COL = 10; void printMap(char map[MAX_ROW][MAX_COL], int row, int col) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { cout << map[i][j]; } cout << endl; } } int main() { srand(time(NULL)); int row, col; char map[MAX_ROW][MAX_COL]; cout << "请输入地图的行数和列数:"; cin >> row >> col; // 生成地图 for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { if (i == 0 || i == row - 1 || j == 0 || j == col - 1) { map[i][j] = &#39;#&#39;; } else { map[i][j] = &#39;.&#39;; } } } // 随机生成宝藏位置和角色起始位置 int treasureRow, treasureCol, playerRow, playerCol; do { treasureRow = rand() % (row - 2) + 1; treasureCol = rand() % (col - 2) + 1; playerRow = rand() % (row - 2) + 1; playerCol = rand() % (col - 2) + 1; } while (treasureRow == playerRow && treasureCol == playerCol); map[treasureRow][treasureCol] = &#39;X&#39;; map[playerRow][playerCol] = &#39;O&#39;; // 开始游戏 char direction; while (true) { printMap(map, row, col); cout << "请输入移动方向(w/a/s/d):"; cin >> direction; int newRow = playerRow, newCol = playerCol; switch (direction) { case &#39;w&#39;: newRow--; break; case &#39;a&#39;: newCol--; break; case &#39;s&#39;: newRow++; break; case &#39;d&#39;: newCol++; break; default: continue; } if (newRow < 1 || newRow >= row - 1 || newCol < 1 || newCol >= col - 1) { continue; } else if (map[newRow][newCol] == &#39;#&#39;) { continue; } else { map[playerRow][playerCol] = &#39;.&#39;; if (newRow == treasureRow && newCol == treasureCol) { map[newRow][newCol] = &#39;$&#39;; printMap(map, row, col); cout << "游戏结束,恭喜你完成游戏。" << endl; break; } else { map[newRow][newCol] = &#39;O&#39;; playerRow = newRow; playerCol = newCol; } } } return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值