我最近完成了以下面试练习:
'机器人可以编程为运行"a","b","c"......"n"公里,它分别需要t a,t b,t c ... t n min.一旦运行到程序设计的公里数,它必须关闭"m"分钟.
在"m"分钟之后,它可以再次被编程为运行另一个"a","b","c"......"n"公里.
你会如何编程这个机器人在最短的时间内达到精确的公里数?
我认为这是无界背包问题的一种变体,其中尺寸将是公里数和值,即完成每次拉伸所需的时间.主要区别在于我们需要最小化而不是最大化价值.所以我使用了以下解决方案:http://en.wikipedia.org/wiki/Knapsack_problem#Unbounded_knapsack_problem ,其中我选择了最小值.
最后,因为我们需要一个精确的解决方案(如果有的话),在算法为所有不同距离构建的地图上,我遍历每个机器人的编程距离并找到其中的精确距离和最短时间.
我认为机器人在两次运行之间的暂停是一个红色的鲱鱼,你只需要将它包含在你的计算中,但它不会影响所采用的方法.
我可能错了,因为我没有通过测试.我对预期的解决方案没有任何其他反馈.
编辑:也许我毕竟没错,因为不同的原因我失败了.我只想验证我对这个问题的处理方法.
import static com.google.common.collect.Sets.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
public final class Robot {
static final Logger logger = Logger.getLogger (Robot.class);
private Set<ProgrammedRun> programmedRuns;
private int pause;
private int totalDistance;
private Robot () {
//don't expose default constructor & prevent subclassing
}
private Robot …Run Code Online (Sandbox Code Playgroud) 我知道这看起来像是Android NotificationListenerService onNotificationPosted 两次触发的副本,并且NotificationListenerService onNotificationPosted() 当它是分组通知的一部分时为单个 Notification 多次调用,但我已经尝试了他们的解决方案,但它们似乎不起作用。
我想要做的就是拥有一个后台服务,该服务计算一个人通过电话收到的通知数量,然后将其写入文本文件。
它适用于短信和环聊通知(即每个通知只触发一次)但是当我使用 WhatsApp 和 Gmail 测试它时,它被触发两次,因此,对于每个 Gmail 通知,我的文本文件中有两行。
这是我的代码。任何帮助将不胜感激。
public class NotifCounterService extends NotificationListenerService {
public static String TAG = NotifCounterService.class.getSimpleName();
Date dateStart;
private Logger logger;
private Context mContext;
@Override
public void onCreate() {
Log.d(TAG, "Created");
logger = new Logger(TAG);
mContext = getApplicationContext();
}
@Override
public IBinder onBind(Intent intent) {
return super.onBind(intent);
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
Log.d(TAG, "Notification has arrived");
Log.d(TAG, "ID: " + sbn.getId() …Run Code Online (Sandbox Code Playgroud) 如何在MySQL表中选择特定行?因此,不是selectING ... ORDER BY date我可以这样做SELECT * FROM Posts FROM(5) TO(10) ORDER BY date DESC,我会在降序选择帖子5到10?
我完全遵循这里指定的指示:
http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html
(唯一的区别是我使用的是版本2.4的wagon-ftp).
然后执行
mvn部署
我只想上传一个war文件,但它上传了几个其他文件,使用pom,md5,sha1扩展名并将它们隐藏在我的一个源目录下.
我一直在尝试寻找适当的配置来修改这种行为,但没有运气.
我有三列,每列都有不同种类的主数据,如下所示:
现在,我想拥有这三个单元格的所有可能组合-
aa kk jj
aa kk ff
aa ll jj
aa ll ff
aa mm jj
...
Run Code Online (Sandbox Code Playgroud)
可以用公式来完成。我发现一个包含2列的公式,但是我无法正确地将其扩展到3列
两列公式:
=IF(ROW()-ROW($G$1)+1>COUNTA($A$2:$A$15)*COUNTA($B$2:$B$4),"",
INDEX($A$2:$A$15,INT((ROW()-ROW($G$1))/COUNTA($B$2:$B$4)+1))&
INDEX($B$2:$B$4,MOD(ROW()-ROW($G$1),COUNTA($B$2:$B$4))+1))
Run Code Online (Sandbox Code Playgroud)
其中G1是放置结果值的单元格
我想答案是否定的.如果我使用4个或更多"M",结果是相同的.
public static void main (String[] args)
{
for (int monthNum = 1; monthNum <= 12; monthNum++)
{
String month = new SimpleDateFormat("MMMM", Locale.US)
.format (new Date (1, monthNum, 2000));
String month2 = new SimpleDateFormat("MMMMM", Locale.US)
.format (new Date (1, monthNum, 2000));
if (month.equals(month2))
continue;
throw new RuntimeException ("");
}
}
Run Code Online (Sandbox Code Playgroud)
结束成功.
但是我不理解为什么实施例中SimpleDateFormat使用专门的5"M",而不是4或任何其它数量> = 4.在模式字符串中给出一些"M"的结果的唯一解释是:
月份:如果模式字母的数量为3或更多,则将月份解释为文本; 否则,它被解释为一个数字.
那会有什么不同吗?为什么不能更好地记录?
它尚未添加到界面的事实让我认为一定有一些正当的理由。虽然我认为你不应该快乐地传递集合,因此,如果需要反向迭代,实现类很少出现在类的接口中,但 IMO 它将改进 SortedSet 接口。
我在scala解释器中得到了这个:
scala> val a:Float = 71F; val b:Int = 71; if (a==b) println ("?")
?
a: Float = 71.0
b: Int = 71
Run Code Online (Sandbox Code Playgroud)
我想知道这种比较的确切语义是什么.即使我对Scala有一个肤浅的知识,我猜浮点数运算(在这种情况下,我确保不使用与java的BigDecimal相当的东西,或者至少我认为)适用于这个例子.所以"a"不是持有数字71,因为"b"是,但接近它.
我认为任何整数到浮点比较产生错误会简化事情,但我相信我必须遗漏一些东西.
另外,我想知道这是否会导致代码中的任何错误.
不知道如何解决这个问题。
这些是我的 pom.xml 中的位:
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-runtime</artifactId>
<version>1.2-M2</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>1.2-M2</version>
<executions>
Run Code Online (Sandbox Code Playgroud)
我将其添加为回购:
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>kotlin-bintray</id>
<name>Kotlin Bintray</name>
<url>http://dl.bintray.com/kotlin/kotlin-dev/</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
在https://repo.maven.apache.org/maven2中找不到 org.jetbrains.kotlin:kotlin-maven-plugin:jar:1.2-M2 的失败 被缓存在本地存储库中,直到更新间隔才会重新尝试解析中央已过期或强制更新
但我没有看到任何可能是错误的。
顺便说一句,请注意运行时 jar 已找到,因此存储库部分必须正确,因为此存储库是 maven 找到它的地方。尽管出于某种原因,Maven 插件 jar 是另一回事...