C++ 排座椅

题目描述:
上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。

同学们在教室中坐成了MM行NN列,坐在第i行第j列的同学的位置是(i,j)(i,j),为了方便同学们进出,在教室中设置了KK条横向的通道,LL条纵向的通道。

于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了22个会交头接耳的同学,那么他们就不会交头接耳了。

请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生的对数最少。



AC代码:

            #include<iostream>
            using namespace std;
            int main()
            {
                int m,n,k,l,d;
                cin>>m>>n>>k>>l>>d;
                int a[d][4],X[m]={0},Y[n]={0};
                for(int i=0;i<d;i++)
                for(int j=0;j<4;j++)
                cin>>a[i][j];
                for(int i=0;i<d;i++)
                {
                    if(a[i][0]==a[i][2])
                    {
	                        if(a[i][1]>a[i][3])Y[a[i][3]]++;
	                        else Y[a[i][1]]++;
                    }
                    else{
  	                        if(a[i][0]>a[i][2])X[a[i][2]]++;
	                        else X[a[i][0]]++;
                        }
                 }//得到 对某排或某列而言 若有过道 可以减少多少组说话学生
                 int x1=0,y1=0,shuchu_x[d]={0},shuchu_y[d]={0},xx[m]={0},yy[n]={0};
                 for(int i=d;i>0;i--){
                    for(int j=1;j<m;j++){
                      if(X[j]==i&&xx[j]==0){
	                  x1++; xx[j]=1;shuchu_x[j]=1;
	                  }	
	                  if(x1>=k)break;
                     }
                     if(x1>=k)break;
                   }//从减少组数大的开始找,若找到则令shuchu_x=1
                   for(int i=d;i>0;i--){
                     for(int j=1;j<n;j++){
                          if(Y[j]==i&&yy[j]==0){
	                      y1++;yy[j]=1;shuchu_y[j]=1;   	
	                  }	
	                  if(y1>=l)break;
                     }
                     if(y1>=l)break;
                    }
                    if(k!=0){
                    int x1=0;
                    for(int i=1;i<m;i++)
                    if(shuchu_x[i]==1){  
                    cout<<i;x1=i;break;
                    }
                    for(int i=x1+1;i<m;i++)
                    if(shuchu_x[i]==1)
                    cout<<" "<<i;cout<<endl;
                  }
                  if(l!=0){
                  int y1=0;
                  for(int i=1;i<n;i++)
                  if(shuchu_y[i]==1){
	              cout<<i;y1=i;break;
                 }
                 for(int i=y1+1;i<n;i++)
                 if(shuchu_y[i]==1)
                 cout<<" "<<i;
                 cout<<endl;	
               }
               return 0;
          }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
LS-DYNA是一种用于模拟动态事件的有限元软件,也可以用于座椅模型的建模和分析。座椅模型主要用于评估座椅在车辆碰撞或其他意外情况下的安全性能。在LS-DYNA中创建座椅模型可以通过多种方法实现。 首先,可以使用软件提供的预定义座椅模型进行建模。这些预定义模型包括常见的座椅类型,如驾驶员座椅、副驾驶座椅和后座椅等。用户只需选择合适的模型并进行必要的参数设置即可。 另外,也可以根据实际需求自定义座椅模型。这需要使用LS-DYNA提供的建模工具,创建座椅的几何形状,并定义材料属性和连接方式。可以使用刚体、弹性材料和可变形网格来建模座椅的不同部件,如座垫、靠背和头枕等。 在建模完成后,可以对座椅模型进行加载和边界条件设置。这包括模拟乘坐者体重和位置的加载,以及模拟安全带的约束。还可以设置碰撞或撞击的边界条件,模拟车辆事故或其他动态事件。 最后,进行模型计算和分析。通过设置适当的求解选项和参数,进行LS-DYNA模拟计算。计算结果将显示座椅的响应,如受力、应变和变形等。可以通过这些结果来评估座椅的性能和安全保护水平,进而进行优化设计。 总而言之,LS-DYNA是一种强大的工具,可用于建模和分析座椅模型。它提供了多种建模方法和求解选项,可帮助工程师评估座椅的性能和安全性,从而优化设计和改进座椅的保护能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值