zoukankan      html  css  js  c++  java
  • UVA 538

    UVA 538 - Balancing Bank Accounts

    题目链接

    题意:给定一些人的欠钱关系,要求在n-1次内还清钱,问方案

    思路:贪心,处理出每一个人最后钱的状态,然后直接每一个人都和最后一个人操作就可以

    代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <string>
    #include <map>
    using namespace std;
    
    const int N = 25;
    
    int n, m, have[N];
    map<string, int> hash;
    string name[N];
    
    int main() {
    	int cas = 0;
    	while (~scanf("%d%d", &n, &m) && n || m) {
    		hash.clear();
    		memset(have, 0, sizeof(have));
    		for (int i = 1; i <= n; i++) {
    			cin >> name[i];
    			hash[name[i]] = i;
    		}
    		string a, b; int val;
    		while (m--) {
    			cin >> a >> b >> val;
    			int u = hash[a], v = hash[b];
    			have[u] += val;
    			have[v] -= val;
    		}
    		printf("Case #%d
    ", ++cas);
    		for (int i = 1; i < n; i++) {
    			if (have[i] < 0)
    				cout << name[i] << " " << name[n] << " " << -have[i] << endl;
    			else if (have[i] > 0)
    				cout << name[n] << " " << name[i] << " " << have[i] << endl;
    			have[n] -= have[i];
    		}
    		printf("
    ");
    	}
    	return 0;
    }


  • 相关阅读:
    路径规划算法总结
    常用滤波器整理
    Debian 9 strech 安装 ROS lunar
    understand 安装笔记
    protobuf 安装与卸载
    maven-surefire-plugin
    spring数据源、数据库连接池
    日志插件总结
    pom.xml常用元素解析
    BeanFactory笔记
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4014467.html
Copyright © 2011-2022 走看看