放盒子

题目描述:
第七题
小y 有一个宽度为 100cm,高度为 20cm,深度为 1cm 的柜子,如下图。
这里写图片描述

小y 还有 3636 个礼物盒,他们的深度都为 1cm。
他们对应的宽度和高度如下,单位(cm)。
这里写图片描述
现在小y 想把这些盒子放到柜子上,由于礼物盒里面都装有礼物,礼物盒必须向上放置,并且不能堆放。由于礼物盒深度和柜子深度一样,所以礼物盒和柜子深度方向也必须一致。并且礼物盒的高度还不能大于柜子的高度,否者放不进去。小y 希望放到柜子上礼物盒的宽度和正好等于柜子的宽度,也就是希望柜子两边都不存在间隙。如下图符合条件的放置。
这里写图片描述
满足条件的情况下,小y 希望能尽可能多的放置礼物盒,算出最多能放多少个礼物盒。

思路:贪心

import java.util.Arrays;
public class Main {
 static int[] a={11,8,11,16,1,2,6,10,17,10,6,5,2,19,4,7,5,5,15,3,15,11,9,17,9,4,10,12,17,19,20,11,10,20,3};
 
 static int[] v={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 static int j=0;

 public static void fanghezi(int n)
 {
  int sum=0;
  int f=0;
  for(int i=0;i<35;i++)
  {
   if(v[i]==1)
   {
    f++;
    sum=sum+a[i];       
   }
  }
  if(sum==100)
  {
   System.out.println(f);
   throw new StopMsgException();
  }
  for(int i=n;i<35;i++)
  {
   if(v[i]==0&&a[n]<=100-sum)
   {
    v[i]=1;
    fanghezi(i+1);
    v[i]=0;
   }
  }
 }
 static class StopMsgException extends RuntimeException {
 }
 public static void main(String[] args) {
	 try {
     	 Arrays.sort(a);
  fanghezi(0);
     } catch (StopMsgException e) {
         System.out.println(e);
     }
	
 }

}



### Ant Design Tabs 组件右上角添加自定义内容 在 Ant Design 的 `Tabs` 组件中,默认情况下并没有提供直接设置右上角自定义内容的功能。然而,可以通过一些技巧来实现这一需求。以下是具体方法: #### 方法一:利用 CSS 和伪元素模拟 可以借助外部容器包裹 `Tabs` 并通过 CSS 定位的方式,在右上角置一个盒子或其他自定义内容。 ```jsx import React from 'react'; import { Tabs } from 'antd'; const { TabPane } = Tabs; export default function App() { return ( <div style={{ position: 'relative', width: '100%' }}> {/* 自定义内容 */} <div style={{ position: 'absolute', top: 8, right: 16, padding: '4px 8px', backgroundColor: '#f5f5f5', border: '1px solid #ccc', borderRadius: '4px', }} > 自定义内容 </div> {/* Tabs 组件 */} <Tabs defaultActiveKey="1"> <TabPane tab="Tab 1" key="1"> Content of Tab Pane 1 </TabPane> <TabPane tab="Tab 2" key="2"> Content of Tab Pane 2 </TabPane> <TabPane tab="Tab 3" key="3"> Content of Tab Pane 3 </TabPane> </Tabs> </div> ); } ``` 这种方法简单易懂,适合不需要频繁更新的内容[^1]。 --- #### 方法二:扩展 `TabPane` 使用插槽机制 如果需要更灵活的控制方式,可以在每个 `TabPane` 中嵌套额外的 JSX 结构,并通过调整布局使其位于右上角。 ```jsx import React from 'react'; import { Tabs, Button } from 'antd'; const { TabPane } = Tabs; export default function App() { return ( <Tabs defaultActiveKey="1"> <TabPane tab={ <> Tab 1{' '} <span style={{ float: 'right', margin: '-4px 0 0 8px', fontSize: '12px', color: '#999', }} > 自定义内容 </span> </> } key="1" > Content of Tab Pane 1 </TabPane> <TabPane tab="Tab 2" key="2"> Content of Tab Pane 2 </TabPane> <TabPane tab="Tab 3" key="3"> Content of Tab Pane 3 </TabPane> </Tabs> ); } ``` 此方法适用于希望将自定义内容绑定到特定标签的情况[^2]。 --- #### 方法三:完全重写 Tab 头部结构 对于更高阶的需求,可以直接覆盖默认的 Tab 样式并重新设计头部区域。这种方式允许开发者自由定制整个 UI 布局。 ```jsx import React from 'react'; import { Tabs, Badge } from 'antd'; const { TabPane } = Tabs; export default function App() { const customTabNode = (title, extraContent) => ( <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}> <span>{title}</span> <Badge count={extraContent} /> </div> ); return ( <Tabs defaultActiveKey="1"> <TabPane tab={customTabNode('Tab 1', 5)} key="1"> Content of Tab Pane 1 </TabPane> <TabPane tab={customTabNode('Tab 2', 10)} key="2"> Content of Tab Pane 2 </TabPane> <TabPane tab={customTabNode('Tab 3', 15)} key="3"> Content of Tab Pane 3 </TabPane> </Tabs> ); } ``` 该方法提供了最大的灵活性,但也增加了复杂度[^3]。 --- ### 总结 以上三种方法分别针对不同场景进行了优化: - **CSS 模拟法**适合静态展示; - **插槽机制**支持动态插入少量内容; - **完全重写**则满足高度个性化的设计需求。 开发人员应根据实际业务逻辑选择最合适的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值