C. Dasha and Password-C. Dasha and Password-暴力|dp思想

来源:互联网 发布:程序员的修炼之道 pdf 编辑:程序博客网 时间:2024/06/06 12:25

http://codeforces.com/contest/761/problem/C
给定一个char组 n*m的
问你每个组各取 数字 ,字母 和 & * #
问你最少操作。
类似一个密码锁,最开始都咋第一排。
n4暴力(数据太小)
dp思想明天补。

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>using namespace std;const int maxn=60;int main(){   int t;    int n,m;    string a[maxn];    while(~scanf("%d%d",&n,&m)){          int sum1=0;          int sum2=0;          int sum3=0;          int ans=1e5;          for(int i=1;i<=n;i++)             cin>>a[i];          for(int i=1;i<=n;i++){              for(int j=1;j<=n;j++){                 for(int k=1;k<=n;k++){                     if(i==j||j==k||i==k) continue;                     sum1=1e4;                     for(int s=0;s<m;s++){                        if(a[i][s]>='0'&&a[i][s]<='9')                            sum1=min(sum1,min(s,m-s));                     }                     sum2=1e4;                     for(int s=0;s<m;s++){                        if(a[j][s]>='a'&&a[j][s]<='z')                            sum2=min(sum2,min(s,m-s));                     }                      sum3=1e4;                     for(int s=0;s<m;s++){                        if(a[k][s]=='#'||a[k][s]=='&'||a[k][s]=='*')                            sum3=min(sum3,min(s,m-s));                     }                    ans=min(sum1+sum2+sum3,ans);                 }              }          }        cout<<ans<<endl;    }    return 0;}
原创粉丝点击