zoukankan      html  css  js  c++  java
  • 回溯6--选择工作

    回溯6--选择工作

    一、心得

    二、题目及分析

    三、代码及结果

     1 #include <iostream>
     2 using namespace std;
     3 //原数据数组 
     4 int data[6][6]={{0,0,0,0,0,0},{0,13,11,10,4,7},{0,13,10,10,8,5},{0,5,9,7,7,4},{0,15,12,10,11,5},{0,10,11,8,8,4}};
     5 //标记数组,遍历人,标记工作是否被做
     6 bool vis[6];
     7 //结果数组 
     8 int ans[6];//用来存哪个人做的哪项工作
     9 //找最大值
    10 int maxx=0;
    11 int ansx[6];
    12 
    13 void print(){
    14     cout<<maxx<<endl;
    15     for(int i=1;i<=5;i++){
    16         cout<<ansx[i]<<" ";
    17     }
    18     cout<<endl;
    19 }
    20 
    21 void search(int step,int sum){
    22     if(step==6) return;
    23     else 
    24         for(int i=1;i<=5;i++){//每个人选工作 
    25             if(!vis[i]){
    26                 sum+=data[step][i],vis[i]=true,ans[step]=i;
    27                 if(sum>maxx){
    28                     maxx=sum;
    29                     for(int j=1;j<=5;j++){
    30                         ansx[j]=ans[j];
    31                     }
    32                 }
    33                 search(step+1,sum);
    34                 vis[i]=false,sum-=data[step][i];
    35             } 
    36         }
    37 } 
    38  
    39 int main(){
    40     search(1,0);
    41     print();
    42     return 0;
    43 }

  • 相关阅读:
    P1939 矩阵加速(数列)
    P3390 矩阵快速幂
    快速幂
    1236:区间合并
    1183:病人排队
    1230:寻找平面上的极大点
    1244:和为给定数
    1228 书架
    1222 放苹果
    洛谷5015标题统计
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7124158.html
Copyright © 2011-2022 走看看