求一个算法

jikuiyu 2013-11-21 11:11:04
V1=(X+Y+Z)
V2= (X+Y)
V3= (X+Z)
v4= (Y+Z)
V1 V2 V3 V4 的值都是知道的 , 怎么去计算X Y Z 的近似值
...全文
159 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
这个可以做到,但是怎么去求XYZ?
LongRui888 2013-11-21
  • 打赏
  • 举报
回复
引用 13 楼 jikuiyu 的回复:
[quote=引用 12 楼 yupeigu 的回复:] [quote=引用 11 楼 jikuiyu 的回复:] [quote=引用 10 楼 yupeigu 的回复:] [quote=引用 9 楼 jikuiyu 的回复:] [quote=引用 7 楼 yupeigu 的回复:] [quote=引用 5 楼 jikuiyu 的回复:] [quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
[/quote] 这样算出来的值, 我永远只有4个, 但是 X,Y,Z的元素却是有几十万个啊 [/quote] 我明白,这个就得看你具体的情况了,现在你举得例子只有xyz,其实xyz有几十万个,也是一样处理的,最多来个动态语句就行。 只要你有v列的定义就有办法 [/quote] V列的值 只有四个,是固定的 。现在就是要计算出xyz的近似值就好了 [/quote] 那v列的定义是固定的吗[/quote]是的 固定的 ,,[/quote] 那就把v列的定义,按照+号,先分拆成具体的定义,比如:v1 = x+y+z ,那么按照+分拆,就是: x y z
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 12 楼 yupeigu 的回复:
[quote=引用 11 楼 jikuiyu 的回复:] [quote=引用 10 楼 yupeigu 的回复:] [quote=引用 9 楼 jikuiyu 的回复:] [quote=引用 7 楼 yupeigu 的回复:] [quote=引用 5 楼 jikuiyu 的回复:] [quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
[/quote] 这样算出来的值, 我永远只有4个, 但是 X,Y,Z的元素却是有几十万个啊 [/quote] 我明白,这个就得看你具体的情况了,现在你举得例子只有xyz,其实xyz有几十万个,也是一样处理的,最多来个动态语句就行。 只要你有v列的定义就有办法 [/quote] V列的值 只有四个,是固定的 。现在就是要计算出xyz的近似值就好了 [/quote] 那v列的定义是固定的吗[/quote]是的 固定的 ,,
LongRui888 2013-11-21
  • 打赏
  • 举报
回复
引用 11 楼 jikuiyu 的回复:
[quote=引用 10 楼 yupeigu 的回复:] [quote=引用 9 楼 jikuiyu 的回复:] [quote=引用 7 楼 yupeigu 的回复:] [quote=引用 5 楼 jikuiyu 的回复:] [quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
[/quote] 这样算出来的值, 我永远只有4个, 但是 X,Y,Z的元素却是有几十万个啊 [/quote] 我明白,这个就得看你具体的情况了,现在你举得例子只有xyz,其实xyz有几十万个,也是一样处理的,最多来个动态语句就行。 只要你有v列的定义就有办法 [/quote] V列的值 只有四个,是固定的 。现在就是要计算出xyz的近似值就好了 [/quote] 那v列的定义是固定的吗
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 10 楼 yupeigu 的回复:
[quote=引用 9 楼 jikuiyu 的回复:] [quote=引用 7 楼 yupeigu 的回复:] [quote=引用 5 楼 jikuiyu 的回复:] [quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
[/quote] 这样算出来的值, 我永远只有4个, 但是 X,Y,Z的元素却是有几十万个啊 [/quote] 我明白,这个就得看你具体的情况了,现在你举得例子只有xyz,其实xyz有几十万个,也是一样处理的,最多来个动态语句就行。 只要你有v列的定义就有办法 [/quote] V列的值 只有四个,是固定的 。现在就是要计算出xyz的近似值就好了
LongRui888 2013-11-21
  • 打赏
  • 举报
回复
引用 9 楼 jikuiyu 的回复:
[quote=引用 7 楼 yupeigu 的回复:] [quote=引用 5 楼 jikuiyu 的回复:] [quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
[/quote] 这样算出来的值, 我永远只有4个, 但是 X,Y,Z的元素却是有几十万个啊 [/quote] 我明白,这个就得看你具体的情况了,现在你举得例子只有xyz,其实xyz有几十万个,也是一样处理的,最多来个动态语句就行。 只要你有v列的定义就有办法
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 7 楼 yupeigu 的回复:
[quote=引用 5 楼 jikuiyu 的回复:] [quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
[/quote] 这样算出来的值, 我永远只有4个, 但是 X,Y,Z的元素却是有几十万个啊
LongRui888 2013-11-21
  • 打赏
  • 举报
回复
引用 6 楼 jikuiyu 的回复:
[quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
这样算出来 只有XYZ 只有4个值了 。。。 但是我们类似XYZ的元素有几十万个啊 [/quote] 一个一个算呗,这个有点像一个方程组,v1,v2,v3,v4,相当于已知变量,而x,y,z是未知数。
LongRui888 2013-11-21
  • 打赏
  • 举报
回复
引用 5 楼 jikuiyu 的回复:
[quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 4 楼 yupeigu 的回复:
这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
这样算出来 只有XYZ 只有4个值了 。。。 但是我们类似XYZ的元素有几十万个啊
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 4 楼 yupeigu 的回复:
这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ?
LongRui888 2013-11-21
  • 打赏
  • 举报
回复
这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 1 楼 fredrickhu 的回复:
Z=V1-V2?
V1,V2,V3,V4 整个数据库都是这4个值,但是后面跟的组合却是很多种,不要求精准,只要求近似就好了
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 1 楼 fredrickhu 的回复:
Z=V1-V2?
有几百万的这样的数据 X,Y,Z 的元素很多,现在要求出所有元素, Z=V1-V2 这个也可以用,如果有些元素没有类似组合的怎么办 ?
--小F-- 2013-11-21
  • 打赏
  • 举报
回复
Z=V1-V2?
jikuiyu 2013-11-21
  • 打赏
  • 举报
回复
引用 14 楼 yupeigu 的回复:
[quote=引用 13 楼 jikuiyu 的回复:] [quote=引用 12 楼 yupeigu 的回复:] [quote=引用 11 楼 jikuiyu 的回复:] [quote=引用 10 楼 yupeigu 的回复:] [quote=引用 9 楼 jikuiyu 的回复:] [quote=引用 7 楼 yupeigu 的回复:] [quote=引用 5 楼 jikuiyu 的回复:] [quote=引用 4 楼 yupeigu 的回复:] 这个几百万的数据都是没什么。 只要你的定义: V1=(X+Y+Z) V2= (X+Y) V3= (X+Z) v4= (Y+Z) 是固定的,就好求了,向上面说的z = v1-v2,然后x = v1-v4,然后y=v1-v3. 然后先求出可以求的组合,对于没有的组合,最后再进行特殊的处理
用SQL 怎么处理 ? [/quote] 类似这样:

;with tb(v1,v2,v3,v4)
as
(
select 14,9,8,11 union all
select 21,12,19,11
)

select x = v1-v4,
       y = v1-v3,
       z = v1-v2 
from tb
/*
x	y	z
3	6	5
10	2	9
*/
[/quote] 这样算出来的值, 我永远只有4个, 但是 X,Y,Z的元素却是有几十万个啊 [/quote] 我明白,这个就得看你具体的情况了,现在你举得例子只有xyz,其实xyz有几十万个,也是一样处理的,最多来个动态语句就行。 只要你有v列的定义就有办法 [/quote] V列的值 只有四个,是固定的 。现在就是要计算出xyz的近似值就好了 [/quote] 那v列的定义是固定的吗[/quote]是的 固定的 ,,[/quote] 那就把v列的定义,按照+号,先分拆成具体的定义,比如:v1 = x+y+z ,那么按照+分拆,就是: x y z[/quote] 这个可以做到 ,但是怎么求XYZ ?

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧