Oil Deposits(bfs)C++实现

#include <iostream>
#include <queue>
using namespace std;
#define N 101
int go[8][2] =
{
	-1,-1,
	-1,0,
	-1,1,
	0,-1,
	0,1,
	1,-1,
	1,0,
	1,1,
};
struct E
{
	int x, y;
};
queue<E> Q;
bool mark[N][N];
char maze[N][N];
int m, n;
void bfs(int x, int y);

int main()
{
	while (cin >> m >> n)
	{
		int ans = 0;
		while (!Q.empty())
			Q.pop();
		for (int i = 1; i <= m; i++)
		{
			for (int j = 1; j <= n; j++)
			{
				mark[i][j] = false;
				cin >> maze[i][j];
			}
		}
		for (int i = 1; i <= m; i++)
		{
			for (int j = 1; j <= n; j++)
			{
				if (maze[i][j] == '*')
					continue;
				if (mark[i][j] == true)
					continue;
				bfs(i, j);
				ans++;
			}
		}
		cout << ans << endl;
	}

	system("pause");
	return 0;
}

void bfs(int x, int y)
{
	E tmp,now;
	tmp.x = x;
	tmp.y = y;
	Q.push(tmp);
	while (!Q.empty())
	{
		now = Q.front();
		Q.pop();
		for (int i = 0; i < 8; i++)
		{
			int nx = now.x + go[i][0];
			int ny = now.y + go[i][1];
			if (nx<1 || nx>m || ny<0 || ny>n)
				continue;
			if (mark[nx][ny] == true)
				continue;
			if (maze[nx][ny] == '*')
				continue;
			tmp.x = nx;
			tmp.y = ny;
			Q.push(tmp);
			mark[nx][ny] = true;
		}
	}
	return;
}

 

### C++ ATM Simulation Program Example Code and Resources An ATM (Automated Teller Machine) simulation can be a great way to learn about handling user inputs, managing accounts, performing transactions like deposits or withdrawals, and ensuring security through PIN verification. Below is an illustrative example of how one might structure such a program using C++. This simple version includes basic functionalities without delving into advanced features. #### Basic Structure of the C++ ATM Simulator ```cpp #include <iostream> #include <string> using namespace std; class Account { private: int accountNumber; double balance; string pin; public: void setAccountDetails(int accNum, double bal, const string& p); bool verifyPin(const string& enteredPin); void deposit(double amount); void withdraw(double amount); double getBalance() const { return balance; } }; void Account::setAccountDetails(int accNum, double bal, const string& p) { accountNumber = accNum; balance = bal; pin = p; } bool Account::verifyPin(const string& enteredPin) { return pin == enteredPin ? true : false; } void Account::deposit(double amount) { if(amount > 0){ balance += amount; cout << "Deposit successful." << endl; }else{ cout << "Invalid deposit amount." << endl; } } void Account::withdraw(double amount) { if(balance >= amount && amount>0){ balance -= amount; cout << "Withdrawal successful." << endl; }else{ cout << "Insufficient funds or invalid withdrawal amount." << endl; } } ``` This snippet defines a class `Account` which holds information related to each bank customer's account including their unique identifier (`accountNumber`), current financial status(`balance`) as well as personal identification number(`pin`). Methods are provided for setting up these details upon creation, verifying whether inputted pins match stored ones during login attempts, adding money via deposits, removing it by making withdrawals, along with checking available balances at any point in time. For more complex implementations involving multiple users, persistent storage solutions would need consideration beyond this introductory level demonstration[^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值