生活随笔
收集整理的這篇文章主要介紹了
pata1044
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目
pata1044
題目思路
本題是求數(shù)字串連續(xù)子串之和的題目,可設置兩指針begin和end及之間串之和count,依照以下思路前進:若count<m(要求),即數(shù)字不夠,則end++;若m<=count<=min(當前連續(xù)和超過m的最小值),則比要求大,那么min=count,begin++,若count>m,則begin++,依此得到大于等于m的最小連續(xù)子串和min,再掃描一次即可輸出。
參考代碼
#include<iostream>
#include<cmath>using namespace std
;int main()
{int m
=0,n
=0,min
=(int)(pow(2,31)-1),k
=0,begin
=0,end
=0,count
=0;int t
=0; cin
>>n
>>m
;int a
[n
];for(int i
=0;i
<n
;i
++)scanf("%d",&a
[i
]);count
=a
[0];while(end
<n
){if(count
<m
){end
++;count
+=a
[end
];}else if(count
>=m
&&count
<=min
){if(count
<min
)k
=0;k
++;min
= count
;count
-=a
[begin
];begin
++; }else if(count
>min
){count
-=a
[begin
];begin
++;}}begin
=end
=0;count
=a
[0];while(end
<n
){if(count
<min
){end
++;count
+=a
[end
];}else if(count
==min
){printf("%d-%d",begin
+1,end
+1);k
--;if(k
>0)printf("\n");count
-=a
[begin
];begin
++; }else if(count
>min
){count
-=a
[begin
];begin
++;}}return 0;}
總結
以上是生活随笔為你收集整理的pata1044的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。