zoukankan      html  css  js  c++  java
  • 1745Divisibility

    这道题目,整个过程都是自己做的,其中j的取值比较讲究技巧,%k——————————————通过了

    #include "iostream"
    #include "string.h"
    #include "algorithm"
    using namespace std;
    int f[11000][110];
    int n,k,i,list[10100],s,e,j,flag;
    bool cmp(int a,int b){
        return a>b;
    }
    int main(){
      cin>>n>>k;
      for(i=1;i<=n;i++){
         cin>>list[i];
         list[i]=list[i]>0?list[i]:(-list[i]);
         list[i]=list[i]%k;
      }
      //for(j=1;j<=n;j++)cout<<list[j]<<' ';cout<<endl;
      sort(list+1,list+n+1,cmp);
      //for(j=1;j<=n;j++)cout<<list[j]<<' ';cout<<endl;
      memset(f,0,sizeof(f));
      f[1][list[1]]=1;
      //for(j=0;j<k;j++)cout<<f[1][j]<<' ';cout<<endl;
      for(i=2;i<=n;i++){
        if(!list[i])break;
        for(j=0;j<=k-1;j++){
            if(f[i-1][j]!=0){
              f[i][(j+list[i]+k)%k]=1;
              f[i][(j-list[i]+k)%k]=1;
            }
        }
        //for(j=0;j<k;j++)cout<<f[i][j]<<' ';cout<<endl;
      }
      if(f[i-1][0])cout<<"Divisible"<<endl;
      else cout<<"Not divisible"<<endl;
    }

    另外我也用了一种超时的方法,就是深搜,这样做,即使我想尽方法,它也是超时,后来觉得确实是这样,所以就转用dp来解决这个问题,下面是我的深搜算法,代码更加简短明了,就是超时了

    #include "iostream"
    #include "algorithm"
    using namespace std;
    int n,k,i,num[10100],sum;
    bool cmp(int a,int b){
     return a>b;
    }
    
    int dfs(int sum,int step){
      if(step==n){
        if(sum%k==0)return 1;
        else return 0;
      }
      if(num[step+1]==0){
        if(sum%k==0)return 1;
        else return 0;
      }
      if(dfs(sum+num[step+1],step+1))return 1;
      if(dfs(sum-num[step+1],step+1))return 1;
    }
    
    int main(){
      cin>>n>>k;
      for(i=1;i<=n;i++){cin>>num[i];num[i]=num[i]%k;}
      sort(num+1,num+n+1,cmp);
      sum=num[1];
      if(dfs(sum,1))cout<<"Divisible"<<endl;
      else cout<<"Not divisible"<<endl;
    }
  • 相关阅读:
    Linux基础命令-pwd
    Linux基础命令-sosreport
    c#设置xml内容不换行;添加属性为xsi:nil="true"的空节点
    sql ROW_NUMBER() 排序函数
    服务器×××上的MSDTC不可用解决办法
    MSDTC Service的访问权限
    setTimeout
    ASP.NET中Request.Form中文乱码的解决方
    js实现小数点后保留N位并可以四舍五入——js对float数据的处理
    Meta标签中的viewport属性含义及设置
  • 原文地址:https://www.cnblogs.com/dowson/p/3264415.html
Copyright © 2011-2022 走看看