zoukankan      html  css  js  c++  java
  • CF1030C

    CF1030C

    题意:

    给你一个数字,问能否拆分成k段,使得每一段的每一位数字相加结果相等。

    解法:

    考虑数位DP。
    暴力按位考虑每一位是否满足条件

    CODE:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    
    using namespace std;
    
    int n,sum;
    char s[105];
    int num[105];
    
    int main() {
        scanf("%d",&n);
        scanf("%s",s+1);
        for(int i = 1 ; i <= n ; i++) {
            sum += (int)s[i] - '0';
            num[i] = (int)s[i] - '0';
        }
        if(sum == 0) {
            puts("YES");
            return 0;
        }
        for(int i = 1 ; i <= sum ; i++) {
            int now = 0 , zz = 1 , ds = 1;
            while(now < i && zz <= n) {
                now += num[zz];
                if(now > i) break;
                if(zz == n) {
                    if(ds >= 3 && now == 0) {
                        puts("YES");
                        return 0;
                    }
                }
                if(now == i) {
                    if(ds != 1 && zz == n) {
                        puts("YES");
                        return 0;
                    }
                    ds++;
                    now = 0; 
                }
                zz++;
            }
        }
        printf("NO
    ");
        return 0;
    }
    
  • 相关阅读:
    selenium + python网页自动化测试环境搭建
    工作总结
    脚本测试总结
    一些知识
    反相器
    递归算法设计
    什么是递归
    CSS3弹性盒模型布局模块
    小方法
    第24章 最佳实践
  • 原文地址:https://www.cnblogs.com/Repulser/p/11421268.html
Copyright © 2011-2022 走看看