[蓝桥杯 2023 省 A] 更小的数
题目描述
小蓝有一个长度均为 n 且仅由数字字符 0∼9 组成的字符串,下标从0到 n−1,你可以将其视作是一个具有n位的十进制数字num,小蓝可以从num 中选出一段连续的子串并将子串进行反转,最多反转一次。
小蓝想要将选出的子串进行反转后再放入原位置处得到的新的数字num(new) 满足条件num(new)> arr; int ann = 0; for (int i = 0; i arr1) { ann++; } } } cout s; //外层循环从字符串末尾开始,内层循环从外层循环的位置开始。 for(int i=s.size()-1;i>=0;i--){ for(int j=i;js[j]) f[i][j]=true;//状态转移方程 else if(s[i]==s[j]) f[i][j]=f[i+1][j-1];//状态转移方程:子串去掉首尾字符的状态 if(f[i][j]==true) ret++;//如果等于1方案数加1 } } cout> s; lens = s.length(); for(int i=0;i maxV) { dfs(x, y + 1, grid[x][y], num + 1); } } } int main() { cin >> n >> m >> k; for (int i = 1; i grid[i][j]; } } dfs(1, 1, -1, 0);//由于Ci(0≤Ci≤12) cout > n; int year = n / 10000; int month = (n - year * 10000) / 100; int day = (n - year * 10000 - month * 100) + 1; int ann=0,num=0; for (int y = year; y 28) break; } } else { if (d > 30) break; } if(ann29) return false; // 是闰年,日期超过29 } else { if(day>28) return false; // 不是闰年,日期超过28 } } return true; } // 判断是否为回文数 bool check_huiwen(string s){ int len=s.size(); for(int i=0,j=len-1;i> n; bool flag = false; for(int i = n + 1;; i++){ // 枚举回文数 if(check_valid(i)){ // 合法的日期 stringstream ss; ss
还没有评论,来说两句吧...