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;
    }
  • 相关阅读:
    Mysql存储引擎概念特点介绍及不同业务场景选用依据
    python
    nginx使用keepalived实现高可用
    python-文件操作(1)
    浏览器缓存知识小结及应用
    cookie 和 session
    tcp三次握手
    TCP/IP系列——长连接与短连接的区别
    python
    python- 迭代器与生成器
  • 原文地址:https://www.cnblogs.com/dowson/p/3264415.html
Copyright © 2011-2022 走看看