华中地区高校第七届ACM程序设计大赛——递增序列【2012年5月27日】

题目意思:

给一个整数,把各位数字按顺序排列,能否构成一个单调递增(差值为1)的序列.特别的是,0可以放在1前边和9后边,都算是符合要求。

例如

12354---12345  yes

12305---01235 no

1209---90123  yes

980---890 yes

11232---11223 no

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 char res[2][10]={"NO","YES"};
 5 int main()
 6 {
 7     int arr[10],sum,i,j,n,l,min,max,flag;
 8     while (scanf("%d",&n),n)
 9     {
10         l=0;flag=1;
11         memset(arr,0,sizeof(arr));
12         while (n!=0)
13         {
14             arr[n%10]++;
15             n/=10;
16             l++;
17         }
18         if(arr[0]==0)
19         {
20             i=1;
21             while(arr[i]==0)    i++;
22             min=i;max=i+l-1;
23             for (i=min+1;i<=max&&flag;i++)    
24                 if(arr[i]!=1)    flag=0;
25         }
26         else
27         {
28             if(arr[0]==1)
29             {
30                 sum=1;
31                 for (i=1;i<=9;i++)
32                 {
33                     if(arr[i]==1)    sum++;
34                     else    break;
35                 }
36                 for (j=9;j>=1&&i!=10;j--)
37                 {
38                     if(arr[j]==1)    sum++;
39                     else    break;
40                 }
41                 if(sum!=l)    flag=0;
42             }
43             else
44             {
45                 flag=0;
46             }
47         }
48         puts(res[flag]);
49     }
50     return 0;
51 }
字节跳动内推

找我内推: 字节跳动各种岗位
作者: ZH奶酪(张贺)
邮箱: cheesezh@qq.com
出处: http://www.cnblogs.com/CheeseZH/
* 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/CheeseZH/p/2520831.html