有abc三个杯子,a装有10份水,b可装7份,c可装3份,但是b和c都是空的,利用b和c中转,把水分成5和5放到a和b中。
各位大大,如何实现?

解决方案 »

  1.   

    是SQL问题啊,我在SQL中学习程序设计啊
      

  2.   

    declare @a int, @c int, @b int
    select @a=10, @b=0, @c=0
    select @a=@a-3, @c=@c+3 -->a(7),b(0),c(3)
    select @c=@c-3, @b=@b+3 -->a(7),b(3),c(0)
    select @a=@a-3, @c=@c+3 -->a(4),b(3),c(3)
    select @c=@c-3, @b=@b+3 -->a(4),b(6),c(0)
    select @a=@a-3, @c=@c+3 -->a(1),b(6),c(3)
    select @c=@c-1, @b=@b+1 -->a(1),b(7),c(2)
    select @b=@b-7, @a=@a+7 -->a(8),b(0),c(2)
    select @c=@c-2, @b=@b+2 -->a(8),b(2),c(0)
    select @a=@a-3, @c=@c+3 -->a(5),b(2),c(3)
    select @c=@c-3, @b=@b+3 -->a(5),b(3),c(0)
    select @a,@b,@c
      

  3.   

    按如下顺序进行即可.
    a  b  c
    10 0  0
    7  0  3
    7  3  0
    4  3  3
    4  6  0
    1  6  3
    1  7  2
    8  0  2
    8  2  0
    5  2  3
    5  5  0
      

  4.   


    create table caps (
      a int check(a between 0 and 10),
      b int check(b between 0 and 7),
      c int check(c between 0 and 0)
    )
    -- init datas
    insert into caps values (10,0,0)
    create procedure trans (
      @src char(1), -- 'a','b','c'
      @tag char(1)  -- 'a','b','c'
    ) as begin
      ..
    end
    go大家继续补充
      

  5.   


    create procedure trans (
      @src char(1), -- 'a','b','c'
      @tag char(1)  -- 'a','b','c'
    ) as begin
      declare @cap_A int, @cap_B int , @cap_C int
      select @cap_A = a, @cap_B = b, @cap_C = c from caps
               if @src = 'a' and @tag = 'b' begin -- 从A倒到B杯
        ..
      end else if @src = 'a' and @tag = 'c' begin -- 从A倒到C杯
        ..
      end else if @src = 'b' and @tag = 'c' begin -- 从B倒到C杯
        ..
      end else if @src = 'b' and @tag = 'a' begin -- 从B倒到A杯
        ..
      end else if @src = 'c' and @tag = 'a' begin -- 从C倒到A杯
        ..
      end else if @src = 'c' and @tag = 'b' begin -- 从C倒到B杯
        ..
      end
    end
      

  6.   

    只会用SQL来增删改查,别的都是嵌在别的语言中实现的。