如何用程序判断数字的的连续性,单纯奇数或偶数的连续性?(50分)

  • 主题发起人 主题发起人 ppqingyu
  • 开始时间 开始时间
P

ppqingyu

Unregistered / Unconfirmed
GUEST, unregistred user!
连码,至少两个以上相连的号码.
奇连,至少两个以上相连的奇数
偶连,至少两个以上相连的偶数.
平常看很容易看到,但是用程序判断的话,好像没有什么决窍.写过此类代码的朋友帮个忙.
实现判断给出的号码中(字符串,数组或是集合都可以),有多少个连码,有多少个奇连,多少个偶连,当前号码最高连接数是多少.
注:
01 02 03 只能是一个连码,一个奇连,不是3个连码,最高连接数是3
01 02 05 11 12 是两个连码,最高连接数是2
01 02 03 04是一个连码,一个奇连,一个偶连,最高连接数是4
 
我也到研究这个,学习
 
能问问,这个在实际应用中的作用吗?
 
說清楚點,這個玩意是一個字段嗎?應該可以實現的!
具體要怎麼實現?
 
to :gaobangsheng 是一个字段来的,其中的值就好像'01 02 03 07 08 10',当然长度会不定,但结构是这样.要实现6个变量的值,
1.有多少对连续的数字,就是字段中的数字,前一个+1=后一个.最高一次有多少个数字连续
2.有多少对以奇数形式连续,就是字段中的数字,像是1,3这样的连续的数字,并需要得出最高一次有多少个数字连续,
3.跟第二个要求一个,只不过改为偶数.
 
研究彩票的 太明显了
我老早研究过了 不过是土的方法 不拖累你了 [:D][:D][:D][:D]
 
明白了,簡單!
要用游標實現!
將這個表的這個字段進行循環,並且在循環時記錄他們的特征,用三個變量記。
...
declare @a int --記錄連續
declare @b int --記錄奇數次數
declare @c int --記錄偶數
declare @m int --記錄上條記錄的值
declare @n int --記錄當前的記錄值

...
--在下面定義三個臨時表,各一個字段,用來記錄三個類型的第次連續次數
--分別為#tempA,#tempB,#tempC
...

FETCH nextFROM CursorName into @n

while @@Fectch_Status = 0
begin
--連續
if @n = @m + 1
set @a= @a+1
else
begin
insert #tempa(A)
values(@a)
set @a = 0
end
--奇
if @n % 2 = 1
if @n = @m+2
set @b= @b+1
else
begin
insert #temp(B)
values(@b)
set @b = 0
end
--求偶
if @n % 2 = 0
if @n = @m + 2
set @c= @c + 1
else
begin
insert #temp(C)
values(@c)
end


set @m = @n
FETCH NEXT FROM CursorName into @n
end

--連續次數
select count(A)
from #tempA
group by A

--最大次數
select max(A)
from #tempA

...其它的表一樣,不再寫了
你再看一下,可以有語法問題,不過思路是這樣的

我寫了很久哦,剛想的,你一定要給分哦,要求具體幫助,可以多給點分,把表結構給我,我可以幫你做!
 
to gaobangsheng:你是用临时表实现的吧,把你的调试(包括建立临时表)的语句一起放上来吧,我看得有点糊涂,因为对游标不太懂,所以需要所有的实现语句一起让我看看效果才可以理解.我还没有建表,只是作出以下的单行字符调试,但没有通过
DECLARE @i Int,@Str VARCHAR(50),@Str2 VarChar(50),@Next Bit
SELECT @I = 1,@Str2 = '01 02 03 07 09 10',@Str = '',@Next = 0
WHILE @I < 7
BEGIN
IF Convert(Tinyint,SubString(@Str2,@i*3-2,2)) + 1 = Convert(Tinyint,SubString(@Str2,(@i+1)*3-2,2))
BEGIN
IF CharIndex(SubString(@Str2,@i*3-2,2),@Str) > 0
SELECT @Str = @Str + SubString(@Str2,@i*3-2,3)
PRINT SubString(@Str2,@i*3-2,3)
PRINT @Str --
IF CharIndex(SubString(@Str2,(@i+1)*3-2,2),@Str) > 0
SELECT @Str = @Str + SubString(@Str2,(@i+1)*3-2,3)
end
SELECT @I = @I + 1
end
SELECT @Str
 
你又沒有給具體的表我,我怎麼幫你做啊,我這個思路都出來了,你還不會的話就只有看一下SQL server 2000的幫助了,在裏面搜索“游標”,可以學一下。我都是學幫助的,很好學
 
很好,谢谢.
 
后退
顶部