分享
  1. 首页
  2. 文章

记一次算法练习

埃赛尔 · · 3785 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

算法一直是自己的弱项 通过算法来学习语言吧

Java版:

/**
 * 算法练习 1
 * Created by Exile on 2017年5月25日.
 * 1 N(N为偶数)个数字,把数字平分 N/2 组,使得每组的数字和相等。
 */
public class ArithmeticTest1 {
// 题目1偶数个数组
 public static void main(String[] args) {
 int[] evenNumberArry = new int[]{1, 7, 2, 7, 6, 5, 2, 8, 3, 4};
 int arryNum = evenNumberArry.length / 2;
// 1 计算sum;
 int sum = 0;
 for (int i : evenNumberArry) {
 sum = sum + i;
 }
// 2 计算出每组的和是多少
 int arryMax = sum / arryNum;
 for (int i = 0; i < evenNumberArry.length; i++) {
 int value = arryMax - evenNumberArry[i];
 int temp;
// 假定一定会有一个与之组成一组
 for (int j = i + 1; j < evenNumberArry.length; j++) {
 if (evenNumberArry[j] == value) {
 temp = evenNumberArry[i + 1];
 evenNumberArry[i + 1] = value;
 evenNumberArry[j] = temp;
 }
 }
 }
 for (int i : evenNumberArry) {
 System.out.println(i);
 }
 }
}
import java.util.ArrayList;
import java.util.Random;
/**
 * 算法练习 2
 * Created by Exile on 2017年5月25日.
 * NxN的棋盘,每个格子可以放一个车,有M个车,问:每个车放完后,棋盘还剩多少格子是所有车攻击范围外?
 * 车可以重叠
 */
public class ArithmeticTest2 {
 public static void main(String[] args) {
// n和m
 int m = 3;
 int n = 3;
 ArrayList<Model> modelList = createModelList(m, n);
 ArrayList<Model> manList = new ArrayList<>();
 for (Model model : modelList) {
 System.out.println("当前model:" + model.toString());
 }
// 方法1:从头到尾撸一遍
 for (int i = 0; i < n; i++) {
 for (int j = 0; j < n; j++) {
 manList.add(new Model(i, j));
 }
 }
 System.out.println("筛选前:" + manList.size());
// 速度太快的话会出问题
 for (int i = 0; i < modelList.size(); i++) {
 for (int j = 0; j < manList.size(); j++) {
 if (!modelList.get(i).getAttackOutCall(manList.get(j))) {
 manList.remove(j);
 }
 }
 }
// }
 System.out.println("筛选后:" + manList.size());
 for (Model model : manList) {
 System.out.println(model.toString());
 }
 }
 /**
 * 根据输入的mn生成对应个数的m对象
 *
 * @param m
 * @param n
 * @return
 */
 private static ArrayList<Model> createModelList(int m, int n) {
 ArrayList<Model> models = new ArrayList<>();
 for (int i = 0; i < m; i++) {
 models.add(new Model(n));
 }
 return models;
 }
 public static class Model {
 private int x;
 private int y;
 public Model(int n) {
 Random random = new Random();
 this.x = random.nextInt(n);
 this.y = random.nextInt(n);
 }
 public Model(int x, int y) {
 this.x = x;
 this.y = y;
 }
 public int getX() {
 return x;
 }
 public int getY() {
 return y;
 }
 @Override
 public String toString() {
 return "Model{" +
 "x=" + x +
 ", y=" + y +
 '}';
 }
 public boolean getAttackOutCall(Model mainModel) {
 if (this.getX() == mainModel.getX() || this.getY() == mainModel.getY()) {
 return false;
 }
 return true;
 }
 }
}

golang版:


						

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:埃赛尔

查看原文:记一次算法练习

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3785 次点击
1 回复 | 直到 2025年05月09日 13:37:56
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏