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

流程算法

Jun 23, 2016 pm 01:54 PM
proses algoritma

简单说明
我定义咯一个数组,
数组的key表示当前步的ID,下一步的ID对应的value...
我要生成一个这个新的数组
例子:
array(1 => int 7
  7 => int 11
  8 => int 7
  9 => int 8
  10 => int 11
  11 => int 12
  12 => NULL
)
结果就是
array(
1=>7
7=>11
11=>12
12=>NULL
)
当前知道开头位为1.

求算法...


回复讨论(解决方案)

$a = array(  1 => 7,  7 => 11,  8 => 7,  9 => 8,  10 => 11,  11 => 12,  12 => NULL,);$i = 1;while(isset($a[$i])) {  $r[$i] = $a[$i];   $i = $a[$i];}$r[$i] = $a[$i]; var_export($r);
Salin selepas log masuk
Salin selepas log masuk
array (
1 => 7,
7 => 11,
11 => 12,
12 => NULL,
)

$map = array(    1 => 7,    7 => 11,    8 => 7,    9 => 8,    10 => 11,    11 => 12,    12 => NULL);function getroad($map){    $key = 1;    $result = array();    while($key!=NULL){        $result[$key] = $map[$key];        $key = $map[$key];    }    return $result;}$result = getroad($map);var_export($result);
Salin selepas log masuk
Salin selepas log masuk



array (
1 => 7,
7 => 11,
11 => 12,
12 => NULL,
)

$a = array(  1 => 7,  7 => 11,  8 => 7,  9 => 8,  10 => 11,  11 => 12,  12 => NULL,);$i = 1;while(isset($a[$i])) {  $r[$i] = $a[$i];   $i = $a[$i];}$r[$i] = $a[$i]; var_export($r);
Salin selepas log masuk
Salin selepas log masuk
array (
1 => 7,
7 => 11,
11 => 12,
12 => NULL,
)



有点点问题
如果key=value就会死循环...
不过这个可以让通过程序让key!=value

$map = array(    1 => 7,    7 => 11,    8 => 7,    9 => 8,    10 => 11,    11 => 12,    12 => NULL);function getroad($map){    $key = 1;    $result = array();    while($key!=NULL){        $result[$key] = $map[$key];        $key = $map[$key];    }    return $result;}$result = getroad($map);var_export($result);
Salin selepas log masuk
Salin selepas log masuk



array (
1 => 7,
7 => 11,
11 => 12,
12 => NULL,
)



这个也会有死循环的问题
$map = array(
1 => 11,
7 => 11,
8 => 7,
9 => 8,
10 => 11,
11 => 8,
12 => NULL
);

你之前的结束条件是NULL,而你却写一个死循环的map,明显和约定的条件不同。
如果死循环,那么结束条件是什么?是否出现循环就直接结束?

对的...
直接出现循环就结束...
我自己慢慢折腾出来咯..不是很好看

$a = array(    7 => 11,    1 => 11,    8 => 7,    9 => 8,    10 => 11,    11 => 8,    12 => NULL,);$firstID = 1;$nextID = 11; //这里程序可以找到是11//将第一位提前$newReturnTemp[$firstID] = $nextID;if (empty($nextID)) {        return array($a[$firstID]);} else {        //重新组建数组,并让开始为为第一位        foreach ($a as $key => $value) {                $newReturnTemp[$key] = $value;        }        unset($key);        unset($value);        //获取数组的数目        $stepCount = count($a);        //提取所有键值        $stepArray = array_keys($newReturnTemp);        //让判断位为第一位        $temp = $firstID;        //组件要返回的数组第一位        $newnew[$firstID] = $nextID;        //将键值进行循环        for ($i = 0; $i < $stepCount; $i++) {                //默认从第一步开始,                if ($temp == $stepArray[$i]) {                        //键值数组循环后面的值                        for ($j = $i + 1; $j < $stepCount; $j++) {                                //判断是否找到下一级的值,依据$a的内容                                if ($newReturnTemp[$stepArray[$i]] == $stepArray[$j]) {                                        //找到值,写入需要返回的数组                                        $newnew[$temp] = $stepArray[$j];                                        //设定下一个判断值                                        $temp = $stepArray[$j];                                        //将键值循环的下一位与当前所返回的下一级值对换,并保证下一次判断是从下一级开始                                        $tt = $stepArray[$j];                                        $stepArray[$j] = $stepArray[$i + 1];                                        $stepArray[$i + 1] = $tt;                                        unset($tt);                                }                        }                }        }        //将返回排序好的数组,并依据排队内容一次取出相对应的数据,这里是用$a来做演示的...        foreach ($newnew as $key => $value) {                $reReturn[$key] = $a[$key];                $last = $value;        }        //将默认最后一位没有找到的值或者是不正确的下一级补进数组...(可以不需要这一步)        if (isset($a[$last])) {                $reReturn[$last] = $a[$last];        }}var_dump($reReturn);
Salin selepas log masuk

支持自己动手的,呵呵。
先实现,再优化。

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1261
29
Tutorial C#
1234
24
CLIP-BEVFormer: Selia secara eksplisit struktur BEVFormer untuk meningkatkan prestasi pengesanan ekor panjang CLIP-BEVFormer: Selia secara eksplisit struktur BEVFormer untuk meningkatkan prestasi pengesanan ekor panjang Mar 26, 2024 pm 12:41 PM

Ditulis di atas & pemahaman peribadi penulis: Pada masa ini, dalam keseluruhan sistem pemanduan autonomi, modul persepsi memainkan peranan penting Hanya selepas kenderaan pemanduan autonomi yang memandu di jalan raya memperoleh keputusan persepsi yang tepat melalui modul persepsi boleh Peraturan hiliran dan. modul kawalan dalam sistem pemanduan autonomi membuat pertimbangan dan keputusan tingkah laku yang tepat pada masanya dan betul. Pada masa ini, kereta dengan fungsi pemanduan autonomi biasanya dilengkapi dengan pelbagai penderia maklumat data termasuk penderia kamera pandangan sekeliling, penderia lidar dan penderia radar gelombang milimeter untuk mengumpul maklumat dalam modaliti yang berbeza untuk mencapai tugas persepsi yang tepat. Algoritma persepsi BEV berdasarkan penglihatan tulen digemari oleh industri kerana kos perkakasannya yang rendah dan penggunaan mudah, dan hasil keluarannya boleh digunakan dengan mudah untuk pelbagai tugas hiliran.

Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Melaksanakan Algoritma Pembelajaran Mesin dalam C++: Cabaran dan Penyelesaian Biasa Jun 03, 2024 pm 01:25 PM

Cabaran biasa yang dihadapi oleh algoritma pembelajaran mesin dalam C++ termasuk pengurusan memori, multi-threading, pengoptimuman prestasi dan kebolehselenggaraan. Penyelesaian termasuk menggunakan penunjuk pintar, perpustakaan benang moden, arahan SIMD dan perpustakaan pihak ketiga, serta mengikuti garis panduan gaya pengekodan dan menggunakan alat automasi. Kes praktikal menunjukkan cara menggunakan perpustakaan Eigen untuk melaksanakan algoritma regresi linear, mengurus memori dengan berkesan dan menggunakan operasi matriks berprestasi tinggi.

Terokai prinsip asas dan pemilihan algoritma bagi fungsi isihan C++ Terokai prinsip asas dan pemilihan algoritma bagi fungsi isihan C++ Apr 02, 2024 pm 05:36 PM

Lapisan bawah fungsi C++ sort menggunakan isihan gabungan, kerumitannya ialah O(nlogn), dan menyediakan pilihan algoritma pengisihan yang berbeza, termasuk isihan pantas, isihan timbunan dan isihan stabil.

Bolehkah kecerdasan buatan meramalkan jenayah? Terokai keupayaan CrimeGPT Bolehkah kecerdasan buatan meramalkan jenayah? Terokai keupayaan CrimeGPT Mar 22, 2024 pm 10:10 PM

Konvergensi kecerdasan buatan (AI) dan penguatkuasaan undang-undang membuka kemungkinan baharu untuk pencegahan dan pengesanan jenayah. Keupayaan ramalan kecerdasan buatan digunakan secara meluas dalam sistem seperti CrimeGPT (Teknologi Ramalan Jenayah) untuk meramal aktiviti jenayah. Artikel ini meneroka potensi kecerdasan buatan dalam ramalan jenayah, aplikasi semasanya, cabaran yang dihadapinya dan kemungkinan implikasi etika teknologi tersebut. Kecerdasan Buatan dan Ramalan Jenayah: Asas CrimeGPT menggunakan algoritma pembelajaran mesin untuk menganalisis set data yang besar, mengenal pasti corak yang boleh meramalkan di mana dan bila jenayah mungkin berlaku. Set data ini termasuk statistik jenayah sejarah, maklumat demografi, penunjuk ekonomi, corak cuaca dan banyak lagi. Dengan mengenal pasti trend yang mungkin terlepas oleh penganalisis manusia, kecerdasan buatan boleh memperkasakan agensi penguatkuasaan undang-undang

Bagaimana untuk membuka berbilang akaun Toutiao? Apakah proses untuk memohon akaun Toutiao? Bagaimana untuk membuka berbilang akaun Toutiao? Apakah proses untuk memohon akaun Toutiao? Mar 22, 2024 am 11:00 AM

Dengan populariti Internet mudah alih, Toutiao telah menjadi salah satu platform maklumat berita paling popular di negara saya. Ramai pengguna berharap untuk mempunyai berbilang akaun pada platform Toutiao untuk memenuhi keperluan yang berbeza. Jadi, bagaimana untuk membuka berbilang akaun Toutiao? Artikel ini akan memperkenalkan secara terperinci kaedah dan proses permohonan membuka berbilang akaun Toutiao. 1. Bagaimana untuk membuka berbilang akaun Toutiao? Kaedah membuka berbilang akaun Toutiao adalah seperti berikut: Pada platform Toutiao, pengguna boleh mendaftar akaun melalui nombor telefon mudah alih yang berbeza. Setiap nombor telefon mudah alih hanya boleh mendaftar satu akaun Toutiao, yang bermaksud pengguna boleh menggunakan berbilang nombor telefon mudah alih untuk mendaftar berbilang akaun. 2. Pendaftaran e-mel: Gunakan alamat e-mel yang berbeza untuk mendaftar akaun Toutiao. Sama seperti pendaftaran nombor telefon mudah alih, setiap alamat e-mel juga boleh mendaftar akaun Toutiao. 3. Log masuk dengan akaun pihak ketiga

Algoritma pengesanan yang dipertingkatkan: untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi Algoritma pengesanan yang dipertingkatkan: untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi Jun 06, 2024 pm 12:33 PM

01Garis prospek Pada masa ini, sukar untuk mencapai keseimbangan yang sesuai antara kecekapan pengesanan dan hasil pengesanan. Kami telah membangunkan algoritma YOLOv5 yang dipertingkatkan untuk pengesanan sasaran dalam imej penderiaan jauh optik resolusi tinggi, menggunakan piramid ciri berbilang lapisan, strategi kepala pengesanan berbilang dan modul perhatian hibrid untuk meningkatkan kesan rangkaian pengesanan sasaran dalam imej penderiaan jauh optik. Menurut set data SIMD, peta algoritma baharu adalah 2.2% lebih baik daripada YOLOv5 dan 8.48% lebih baik daripada YOLOX, mencapai keseimbangan yang lebih baik antara hasil pengesanan dan kelajuan. 02 Latar Belakang & Motivasi Dengan perkembangan pesat teknologi penderiaan jauh, imej penderiaan jauh optik resolusi tinggi telah digunakan untuk menggambarkan banyak objek di permukaan bumi, termasuk pesawat, kereta, bangunan, dll. Pengesanan objek dalam tafsiran imej penderiaan jauh

Aplikasi algoritma dalam pembinaan 58 platform potret Aplikasi algoritma dalam pembinaan 58 platform potret May 09, 2024 am 09:01 AM

1. Latar Belakang Pembinaan 58 Portrait Platform Pertama sekali, saya ingin berkongsi dengan anda latar belakang pembinaan 58 Portrait Platform. 1. Pemikiran tradisional platform pemprofilan tradisional tidak lagi mencukupi Membina platform pemprofilan pengguna bergantung pada keupayaan pemodelan gudang data untuk menyepadukan data daripada pelbagai barisan perniagaan untuk membina potret pengguna yang tepat untuk memahami tingkah laku, minat pengguna dan keperluan, dan menyediakan keupayaan sampingan, akhirnya, ia juga perlu mempunyai keupayaan platform data untuk menyimpan, bertanya dan berkongsi data profil pengguna dan menyediakan perkhidmatan profil dengan cekap. Perbezaan utama antara platform pemprofilan perniagaan binaan sendiri dan platform pemprofilan pejabat pertengahan ialah platform pemprofilan binaan sendiri menyediakan satu barisan perniagaan dan boleh disesuaikan atas permintaan platform pertengahan pejabat berkhidmat berbilang barisan perniagaan, mempunyai kompleks pemodelan, dan menyediakan lebih banyak keupayaan umum. 2.58 Potret pengguna latar belakang pembinaan potret di platform tengah 58

Adakah sauh tidur Douyin menguntungkan? Apakah prosedur khusus untuk penstriman langsung tidur? Adakah sauh tidur Douyin menguntungkan? Apakah prosedur khusus untuk penstriman langsung tidur? Mar 21, 2024 pm 04:41 PM

Dalam masyarakat yang serba pantas hari ini, masalah kualiti tidur melanda semakin ramai orang. Untuk meningkatkan kualiti tidur pengguna, sekumpulan sauh tidur khas telah muncul di platform Douyin. Mereka berinteraksi dengan pengguna melalui siaran langsung, berkongsi petua tidur dan menyediakan muzik dan bunyi yang menenangkan untuk membantu penonton tidur dengan tenang. Jadi, adakah sauh tidur ini menguntungkan? Artikel ini akan memberi tumpuan kepada isu ini. 1. Adakah sauh tidur Douyin menguntungkan? Douyin sleep anchor memang boleh mendapat keuntungan tertentu. Pertama, mereka boleh menerima hadiah dan pemindahan melalui fungsi pemberian tip dalam bilik siaran langsung, dan faedah ini bergantung pada bilangan peminat dan kepuasan penonton mereka. Kedua, platform Douyin akan memberikan sauh bahagian tertentu berdasarkan bilangan tontonan, suka, perkongsian dan data lain siaran langsung. Beberapa sauh tidur juga akan

See all articles