题目描述
有N个正整数组成的一个序列,给定一个整数sum,求长度最长的的连续子序列使他们的和等于sum,返回该子序列的长度,如果没有满足要求的序列返回-1。
输入描述
第1行有N个正整数组成的一个序列。
第2行给定一个整数sum。
输出描述
长度最长的的连续子序列使他们的和等于sum,返回该子序列的长度,如果没有满足要求的序列返回-1。

写了两天,换了几种思路没写出来,看了牛客网上的代码,觉得可以学习借鉴。
学习代码1:(来源:博主https://www.nowcoder.com/users/587904743)
#include<stdio.h>
int main(){
int n;
while(scanf("%d",&n)==1){//如果有输入的话
int x,num,a[10]={0};//
while(n){
x=n%10;//x是n除以十的余数,也就是从右往左的数字
if(a[x]==0){//如果这个数字没出现过
a[x]=1;//那么使得这个下标在数组中对应的值为1
num=num*10+x;//将从右往左变成从左往右。这一步很绝!
}
n/=10;//n除以十
}
printf("%d\n",num);//从左往右输出!

给定一个正整数序列和目标值sum,求能构成sum的最长连续子序列长度。若不存在这样的子序列,返回-1。文章讨论了两种解法及其存在的问题与改进。
最低0.47元/天 解锁文章
239

被折叠的 条评论
为什么被折叠?



