CCF 第一题 2018年9月 卖菜问题(JAVA)

一,初版

package question20189;

import java.util.ArrayList;
import java.util.Scanner;

/*
 * 卖菜:根据自己和左右两边的定价求出平均值,为第二天的定价
 *    1.价钱改前和改后都为整数
 *    2.第一位的只有自己和右边商店,最后一位只有自己后左边的商店
 * 
 * 得分:10分(...还能在低点,不行我不放弃!!见test)
 * 
 * */
public class Main {

    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
         int num=s.nextInt();
         ArrayList store=new ArrayList();
         for(int i=0;i<num;i++) {
             store.add(s.nextInt());
         }
         //计算
         ArrayList Twostore=new ArrayList();
         int price;
         for(int i=0;i<num;i++) {
             if(i>0&&i<num-1) {
                 int sum=(int)store.get(i-1)+(int)store.get(i)+(int)store.get(i+1);
                 if(sum%2==1) {
                     price=(sum-1)/3;
                     Twostore.add(i, price);
                 }else {
                     price=sum/3;
                     Twostore.add(i, price);
                 }
                
             }else if(i==0) {
                 int sum=(int)store.get(i)+(int)store.get(i+1);
                 if(sum%2==1) {
                     price=(sum-1)/2;
                     Twostore.add(i, price);
                 }else {
                     price=sum/2;
                     Twostore.add(i, price);
                 }
             }else if(i==(num-1)) {
                 int sum=(int)store.get(i)+(int)store.get(i-1);
                 if(sum%2==1) {
                     price=(sum-1)/2;
                     Twostore.add(i, price);
                 }else {
                     price=sum/2;
                     Twostore.add(i, price);
                 }
             }
         }
         //输出
         System.out.println("------这里是输出:\n");
         System.out.println(store+"\n");
         for(int i=0;i<num;i++) {
             System.out.print(Twostore.get(i)+" ");
         }
        
    }

}
 

二,改进版

package question20189;

import java.util.ArrayList;
import java.util.Scanner;
/*
 * 卖菜最终版:相比于Main.class,少了对和的比较,直接用的“/”
 *   
 * 得分:100
 * 
 * */
public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner s=new Scanner(System.in);
        int num=s.nextInt();
        ArrayList store=new ArrayList();
        for(int i=0;i<num;i++) {
               store.add(s.nextInt());
        }
        //计算
        ArrayList Twostore=new ArrayList();
        int price;
        for(int i=0;i<num;i++) {

            if(i>0&&i<num-1) {
                int sum=(int)store.get(i-1)+(int)store.get(i)+(int)store.get(i+1);
                 price=sum/3;
                 Twostore.add(i, price);
                
                
            }else if(i==0) {
                int sum=(int)store.get(i)+(int)store.get(i+1);
           
                    price=sum/2;
                    Twostore.add(i, price);
                
            }else if(i==(num-1)) {
                int sum=(int)store.get(i)+(int)store.get(i-1);
                
                    price=sum/2;
                    Twostore.add(i, price);
                
            }
            
        }
        for(int i=0;i<num;i++) {
            System.out.print(Twostore.get(i)+" ");
        }
        
    }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值