zoukankan      html  css  js  c++  java
  • POJ2531--子网流量问题

    #include <iostream>
    using namespace std;
    
    #define SIZE 20
    int data[SIZE + 1][SIZE + 1];
    
    int subnet[2][SIZE];
    
    int maxTraffic = 0;
    
    int getTraffic(int node, int netNumber, int size){
        int ret = 0;
        for(int i = 0; i < size; i++){
            if(subnet[netNumber][i]){
                ret += data[node][i];
            }
        }
        return ret;
    }
    
    void getMax(int curStep, int targetStep,int curTraffic, int startPos, int size){
        if(curStep == targetStep) return;
        
        for(int i = startPos; i < size; i++){
            subnet[0][i] = 0;
            subnet[1][i] = 1;
    
            int trfficWithSubnet1 = getTraffic(i, 1, size);
            int trfficWithSubnet0 = getTraffic(i, 0, size);
    
            int tmp = curTraffic;
            curTraffic = curTraffic - trfficWithSubnet1 + trfficWithSubnet0;
            if(curTraffic > maxTraffic) maxTraffic = curTraffic;
    
            getMax(curStep + 1, targetStep, curTraffic, i + 1, size);
    
            subnet[0][i] = 1;
            subnet[1][i] = 0;
            curTraffic = tmp;
        }
    
    }
    
    int main(){
        //freopen("input.txt", "r", stdin);
        int N;
        cin >> N;
    
        for(int i = 0; i < N; i++){
            for(int j = 0; j < N; j++){
                cin >> data[i][j];
            }
        }
    
        for(int i = 0; i < N; i++){
            subnet[0][i] = 1;
            subnet[1][i] = 0;
        }
        maxTraffic = 0;
        getMax(0, N/2, 0, 0, N);
        cout << maxTraffic << endl;
    
    }
    大多数想法要么平庸,要么更糟糕,这很大程度上因为绝妙的想法难得一见,而且他们还要在我们身边这个充斥了各种恶俗的所谓常识的环境中孕育生长。
  • 相关阅读:
    c++ 有序二叉树的应用
    c++ 二叉树的遍历
    c++ 创建二叉树
    c++ 双向链表 的查找和删除
    c++ 双向循环链表
    c++ 双向链表
    Jzoj4209 已经没有什么好害怕的了
    Jzoj4209 已经没有什么好害怕的了
    后缀自动机转后缀树模板
    后缀自动机转后缀树模板
  • 原文地址:https://www.cnblogs.com/linux0537/p/6144959.html
Copyright © 2011-2022 走看看