<!DOCTYPE HTML>
<html lang="zh-CN">
<script type="text/javascript">
function E( x ){console.log(x);};
</script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<style>
*{border: 0px; margin: 0px; padding:0px;}
.main{width:80%; height:600px; margin:0px auto; position: relative;}
.main .cell{width:10%; height:10%; border:1px solid #333; position: absolute;}
.main .cell.on{background: #39f;}
</style>
<body>
<div class="main">
</div>
</body>
<script type="text/javascript">
var al_len = 10,
_num = (function(){
var _al = [];
for(var i = 0; i < al_len; i++){
_al.push( Math.ceil( Math.random() * 10 ) );
};
return _al;
})();
function start(){
var _t,
_l,
_cell = [];
for(var i = 0 , len = _num.length; i < len; i++){
for(var k = 0 , lenk = _num[ i ]; k < lenk; k++){
_cell.push("<div class='cell' style='top:" + ( al_len - k ) + "0%; left:" + ( i * 10 ) + "%;'></div>");
};
};
$(".main").html( _cell.join("") );
};
function count( num ){
var _fill = {},
_x,
_need = 0;
_x = function( i ){
var _tmp_p = i,
_tmp_n = i;
for(var _i = i - 1 ;;_i--){
if( _i >= 0 ){
if( num[ _i ] > num[ _tmp_p ] ){
_tmp_p = _i;
};
} else {
if( _tmp_p == i ){
return _fill[ i ] = 0;
};
break;
};
};
for(var _i = i + 1 ;;_i++){
if( num[ _i ] ){
if( num[ _i ] >= num[ _tmp_n ] ){
_tmp_n = _i;
};
} else {
if( _tmp_n == i ){
return _fill[ i ] = 0;
};
break;
};
};
_fill[ i ] = ( num[ _tmp_p ] >= num[ _tmp_n ] ) ? _tmp_n : _tmp_p;
_fill[ i ] = num[ _fill[ i ] ] - num[ i ];
};
for(var i = 1; i < num.length - 1; i++){
_x( i );
};
for(var a in _fill){
_need += _fill[ a ];
};
E( _fill );
return _need;
};
start();
alert( "总量" + count( _num ) );
</script>
</html>
之前在首页上看到twiiter的水洼题目
大概意思:
随机生成几个数 每个数作为一堵墙的高度。。
然后将水倒入 求最后不会有水溢出时
剩余总水量的大小
网上有人说可以通过一次遍历实现 。。。
不知道有木有大神愿意试试 留下代码
让吾等众生膜拜一下