2017年10月07日普及组 蚂蚁

这里写图片描述
这里写图片描述

分析
a[i]表示第i只蚂蚁是否相碰。
1.因为横纵坐标为-1000~1000,就枚举步数2000次就好了,因为他可能在某个带小数的坐标相碰,所以每一步走0.5而不能走1,这样的话步数就是4000次0.5而不是2000次1.
2.每一次把相碰的蚂蚁全部找出来,并且标记,在找的过程中用另外的数组b标记,因为正在找的过程是参照上一次经过排除后的蚂蚁来找的,这一次标记不能用上去。
3.做完以后把b数组更新后的值赋给a。

程序:

var
a,b:array[0..51]of boolean;
x,y:array[0..51]of real;
t:array[0..51,1..2]of real;
i,j,k,n,ans:longint;
s:string;
begin
    assign(input,'ant.in');
    reset(input);
    assign(output,'ant.out');
    rewrite(output);
    readln(n);
    readln(s);
    for i:=1 to n do
    begin
        readln(x[i],y[i]);
        a[i]:=true;
        b[i]:=true;
        if s[i]='N' then t[i,2]:=0.5 else
        if s[i]='E' then t[i,1]:=0.5 else
        if s[i]='S' then t[i,2]:=-0.5 else
        if s[i]='W' then t[i,1]:=-0.5;
    end;
    for i:=1 to 4000 do
    begin
        for j:=1 to n do
        if a[j]=true then
        begin
            x[j]:=x[j]+t[j,1];
            y[j]:=y[j]+t[j,2];
        end;
        for j:=1 to n do
        if a[j]=true then
        begin
            for k:=1 to n do
            if a[k]=true then
            if (j<>k) then
            if (x[k]=x[j]) and (y[k]=y[j])
            then
            begin
                b[j]:=false;
                b[k]:=false;
                a[0]:=false;
            end;
        end;
        a:=b;
        if a[0]=true then break;
    end;
    for i:=1 to n do
    if a[i]=true then inc(ans);
    writeln(ans);
    close(input);
    close(output);
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500039.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值