Jadual Kandungan
回复讨论(解决方案)

求一算法!!

Jun 23, 2016 pm 02:24 PM

现有一区间:$start--$end  (例:5--10)。
给一变量$param:
如果$param 如果$param>$end  则$param=$end
不用if else,三元 等逻辑算法(虽然简单并且效率也高)
求实现此要求的数学算法


回复讨论(解决方案)

搞不定

不存在这个算法(不使用比较),而且对于解释性的语言来说,也别想着位运算会提高速度了。

即使存在,里面必然包含 2个乘法和一次除法,这个时间可比if - else费时。

所以,不存在。

例:5--10 (x-y)
a=x-z
b=y-z

假设判断数为1(z)
因为a大于0,b大于0。所以z=x=5。


假设判断数为11(z)
因为a小于0,b小于0。所以z=y=10。


假设判断数为6(z)
因为a小于0,b大于0。所以不成立。


蛋疼了

尝试了 或 与 异 模 舍入...各种组合,实在得不到答案
大家探讨下实现此算法的可能性

楼主求算法啊,这个真的没有 =_=... 

不存在这个算法(不使用比较),而且对于解释性的语言来说,也别想着位运算会提高速度了。

即使存在,里面必然包含 2个乘法和一次除法,这个时间可比if - else费时。

所以,不存在。

公式本身估计存在。不使用判断
但是,真的不存在某个非常快的公式,刚才我推导了一下,发现必须用到乘法/除法运算。

为什么我的4楼给吞了

我也尝试了多种运算组合始终无法得到结果
大家探讨下实现的可能性

求推导过程
公式本身估计存在。不使用判断
但是,真的不存在某个非常快的公式,刚才我推导了一下,发现必须用到乘法/除法运算。

x = 5  (y  x = y  (y在[5,10]区间)
x = 10 (y >= 10)
------------------------------------------------------------
楼主画个坐标图,基本相当于闪电模样的一个曲线(下图),学几何的时候没见过这种曲线方程。。
   | 
   |
   |
   /(10)
  /
 /
|(5)
|
|
|
|

不使用比较真的可以实现??我很怀疑

a,b E [5,10]
x=a+1;
x=b-1;
且a 值很多....

路过php应该可以做!



数学不好,暂时想不到,在不分区间(即不用if)的条件下,此f(x)的解法...坐等数学帝...

可以用min,max不是很简单?

$param = 4;echo min(max($param,5),10);
Salin selepas log masuk

就行了吧。

确实。有min 有 max...



家伙们,继续啊。。

又学到了

不过想想 max min的机制 应该是在内部用逻辑运算来实现的吧

一语惊醒梦中人啊
function getnum($param, $start, $end)
{
$min = min($param, $start, $end);
$max = max($param, $start, $end);

if ($min == $param)
{
$param = $min;
}

if ($max == $param)
{
$param = $max;
}

return $param;
}

可以用min,max不是很简单?
PHP code
$param = 4;
echo min(max($param,5),10);

就行了吧。

=_=...
foolbirdflyfirst有码了啊。你还写

一语惊醒梦中人啊
function getnum($param, $start, $end)
{
$min = min($param, $start, $end);
$max = max($param, $start, $end);

if ($min == $param)
{
$param = $min;
}

if ($max == $param)
{
$param……

好歹尊重一下别人的劳动的成果嘛


=_=...
foolbirdflyfirst有码了啊。你还写

引用 21 楼 jasmine_xiaocao 的回复:

一语惊醒梦中人啊
function getnum($param, $start, $end)
{
$min = min($param, $start, $end);
$max = max($param, $start, $end);

if ($mi……

这位同学,你跑题严重啊 呵呵~~
好歹尊重一下别人的劳动的成果嘛

引用 22 楼 ci1699 的回复:

=_=...
foolbirdflyfirst有码了啊。你还写

引用 21 楼 jasmine_xiaocao 的回复:

一语惊醒梦中人啊
function getnum($param, $start, $end)
{
$min = min($param, $start, $end);
……


楼主什么意思???
这位同学,你跑题严重啊 呵呵~~
引用 23 楼 jasmine_xiaocao 的回复:
好歹尊重一下别人的劳动的成果嘛

引用 22 楼 ci1699 的回复:

=_=...
foolbirdflyfirst有码了啊。你还写

引用 21 楼 jasmine_xiaocao 的回复:

一语惊醒梦中人啊
function getnum($param, $start,……

题目说了不能用if else 的哦 亲~ 楼主什么意思???
引用 24 楼 mr_merlin 的回复:

这位同学,你跑题严重啊 呵呵~~
引用 23 楼 jasmine_xiaocao 的回复:
好歹尊重一下别人的劳动的成果嘛

引用 22 楼 ci1699 的回复:

=_=...
foolbirdflyfirst有码了啊。你还写

引用 21 楼 jasmine_xiaocao 的回复:

一语惊醒梦……

这样用也不行??那我错了。。。。

题目说了不能用if else 的哦 亲~引用 25 楼 jasmine_xiaocao 的回复:
楼主什么意思???
引用 24 楼 mr_merlin 的回复:

这位同学,你跑题严重啊 呵呵~~
引用 23 楼 jasmine_xiaocao 的回复:
好歹尊重一下别人的劳动的成果嘛

引用 22 楼 ci1699 的回复:

=_=...
foolbirdflyfir……

可以用min,max不是很简单?
PHP code
$param = 4;
echo min(max($param,5),10);

就行了吧。
不错,如果不可以用min,max呢?

看了半天没想出来
看来我的算法水平差的没法

学习学习

function foo($a, $b, $c) {	Return (((($c-$a) + (($c-$a)  >> 31)) ^ (($c-$a) >> 31)) - ((($c-$b) + (($c-$b)  >> 31)) ^ (($c-$b) >> 31)) + $a + $b) / 2;}echo foo(20, 30, 50);  // 30
Salin selepas log masuk

这没用任何函数拉。
我去求经得到的,
算法有待研究。

用abs的话就简单明了了

引用 17 楼 foolbirdflyfirst 的回复:

可以用min,max不是很简单?
PHP code
$param = 4;
echo min(max($param,5),10);

就行了吧。

不错,如果不可以用min,max呢?
我也不知道。。。#30的人才啊。哈哈

我也不知道

分别将 所求数 转化为 下界 进制数 和 上界 进制数,
所求结果 为

example : (5,10,x) x=8
x1 = 13(mod5)
x2 = 08(mod10)
answer = (x1msb ⊙ x2msb)*(x1msb*5+x2msb*10)+(x1msb xor x2msb)*x

这里的x1msb x2msb需要进行 高位整数除法处理后的结果 才能得到二进制的 0,1

楼主威武,不知道你在想什么

观望中。。。。

路过学习。

有这样实现的算法?

x = 5 (y <= 5)
x = y (y在[5,10]区间)
x = 10 (y >= 10)
------------------------------------------------------------
楼主画个坐标图,基本相当于闪电模样的一个曲线(下图),学几何的时候没见过这种曲线方程。。
|
|
|
/(10)
/
/
|(5)
|
|
|
|

如9楼所言,如果楼主要的是数学算法的话,这种
?? ?? ?? ?? ?? ?? ??
/
/
/
/
/
?? ?? ?? ?? ?? ?? ??
类似的函数曲线还真是没见过啊,
只能是分段函数了,分为三段,这样貌似就得用if else了。

额- -我的图怎么变成这样子了。。。。
那个曲线就是类似于Z的Y轴对称图形,这样子应该只能是分段函数了吧?因为它一点也不圆滑是有死角的
引用 9 楼 foolbirdflyfirst 的回复:

x = 5 (y <= 5)
x = y (y在[5,10]区间)
x = 10 (y >= 10)
------------------------------------------------------------
楼主画个坐标图,基本相当于闪电模样的一个曲线(下图),学几何的时候没见过这种曲线方程。。
|
|
……

public static int get(int start, int end, int param)        {            param -= start;            param &= (int)(((uint)param) >> 31) - 1;            param += start;            param -= end;            param &= (int)((((uint)param) >> 31) ^ 1) - 1;            return param += end;        }        public static int get1(int start, int end, int param)        {            return new int[] { end, param, start, start }[(((uint)(param - start) >> 30) & 2) | ((uint)(param - end) >> 31)];        }
Salin selepas log masuk

用符号位只能算正数,否则要将int扩展到long

不知道这个是不是楼主想要的。

int foo(int start, int end, int param){	int tmp[2];	tmp[0] = param;		tmp[1] = start;	param = tmp[(param-start)>>(sizeof(int)*8-1)];	tmp[1] = end;	param = tmp[(end-param)>>(sizeof(int)*8-1)];	return param;}
Salin selepas log masuk

param = ((start+end)-abs(start-end))/2, 其中abs()为取绝对值运算。

param = (abs(param-start)-abs(param-end)+start+end)/2;

实在是看不懂·

不知道啊

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Huraikan prinsip -prinsip yang kukuh dan bagaimana ia memohon kepada pembangunan PHP. Apr 03, 2025 am 12:04 AM

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Terangkan konsep pengikatan statik lewat dalam PHP. Terangkan konsep pengikatan statik lewat dalam PHP. Mar 21, 2025 pm 01:33 PM

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Bagaimana cara menetapkan kebenaran secara automatik UnixSocket selepas sistem dimulakan semula? Mar 31, 2025 pm 11:54 PM

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Bagaimana cara menghantar permintaan pos yang mengandungi data JSON menggunakan perpustakaan php curl? Apr 01, 2025 pm 03:12 PM

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Ciri -ciri Keselamatan Rangka Kerja: Melindungi Kelemahan. Mar 28, 2025 pm 05:11 PM

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Menyesuaikan/Memperluas Rangka Kerja: Cara Menambah Fungsi Custom. Mar 28, 2025 pm 05:12 PM

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

See all articles