在ACM通讯,2008年8月的"困惑"专栏中,Peter Winkler提出以下问题:
在我们面前的桌子上是10个点,在我们的口袋里是10美元1个硬币.证明硬币可以放置在桌子上(没有两个重叠),以便覆盖所有点.图2显示了这个特定点集的硬币的有效位置; 它们是透明的,所以我们可以看到它们.底部的三个硬币不需要.
在下一期中,他提出了他的证据:
我们不得不表明桌子上的任何10个点都可以被非重叠的1美元硬币覆盖,这是Naoki Inaba设计的一个问题,由他的朋友Hirokazu Iwasawa送给我,他们都是日本的拼图专家.
关键是要注意,以蜂窝状图案排列的包装盘覆盖了平面的90%以上.但我们怎么知道他们呢?半径为1的圆盘适合由六个等高三角形高度为一的正六边形组成.由于每个这样的三角形都有面积
sqrt(3)/3,六边形本身就有面积2*sqrt(3); 因为六边形将平面平铺成蜂窝状图案,所以每个具有面积π的圆盘覆盖? /(2*sqrt(3))平面表面的~9069.因此,如果磁盘随机放置在平面上,则覆盖任何特定点的概率为.9069.因此,如果我们在桌子上以六边形模式随机放置大量1美元硬币(借来的),平均而言,我们的10个点中的9.069将被覆盖,这意味着至少在某些时候所有10个将被覆盖.(我们最多只需要10个硬币,所以还剩下其余的.)
磁盘覆盖无限平面的90.69%是什么意思?最简单的回答方法是,或许可以说,当方块扩展时,磁盘覆盖的任何大方块的百分比接近该值.关于磁盘放置的"随机"是什么?考虑它的一种方法是固定任何包装和其中的任何磁盘,然后从包含磁盘的蜂窝六边形中随机均匀地选取一个点并移动磁盘使其中心位于所选点.
我不明白.这种证明的概率性质不仅仅意味着在大多数配置中,所有10个点都可以被覆盖.我们还不能提出一个涉及10个(或更少)点的配置,其中一个点不能被覆盖?
我试图在Windows 7机器上编译Vowpal Wabbit,在尝试Netbeans,Cygwin和MinGW后,我开始怀疑我是否正在尝试一些甚至可行的东西.
以上每个都需要**.h文件,这些文件不是为sys/socket.h等窗口设计的.
任何实际做过这一点的人,我将不胜感激任何建议.
我最近在以下函数中修复了一个错误,答案让我感到惊讶.我有以下功能(在我发现错误之前编写):
    void Level::getItemsAt(vector<item::Item>& vect, const Point& pt)
    {
        vector<itemPtr>::iterator it; // itemPtr is a typedef for a std::tr1::shared_ptr<item::Item>
        for(it=items.begin(); it!=items.end(); ++it)
        {
            if((*it)->getPosition() == pt)
            {
                item::Item item(**it);
                items.erase(it);
                vect.push_back(item);
            }
        }
    }
此函数查找Item"项目"向量中具有特定位置的所有对象,将其从"项目"中删除,并将它们放在"vect"中.之后,名为的函数putItemsAt执行相反的操作,并将项添加到"项".第一次通过,getItemsAt工作正常.putItemsAt但是,在调用之后,for循环getItemsAt将在'items'结束时运行.'它'将指向无效Item指针和段错误getPosition().在预感中,我改变it!=items.end()了it<items.end(),并且它起作用了.谁能告诉我为什么?环顾SO表明它可能涉及erase使迭代器无效,但它仍然没有意义,为什么它会第一次工作.
我也很好奇,因为我计划将"项目"从向量更改为列表,因为列表的擦除效率更高.我知道我必须使用!=列表,因为它没有<运算符.我会使用列表遇到同样的问题吗?
基本上我使用的是Ruby gem for Ruby,我对日期比较没有合理的支持.该Mysql::Time班只给了我唯一的访问方法,如年,月,第二等我可以做的更好的日期比较,如果我能变成一个Ruby的DateTime对象.如何将MySQL的DateTime字段转换为可传递给的Julian日期号DateTime.jd?
你将如何实现通过正则表达式解析一些输入并将创建的字符串转换为其他类型的类?我的方法是:
class ARegex[T](regex:Regex, reform:Option[String => T]){
  def findFirst(input:String):Option[T] = {
    (regex.findFirstIn(input), reform) match{
      case (None, _) => None
      case (Some(s), None) => Some(s) // this won't compile because of type mismatch
      case (Some(s), Some(fun)) => Some(fun(s))
    }
  }
}
class BRegex[T](regex:Regex, reform:Option[String => T]) {
  def findFirst(input:String) = {  //returns Option[Any] - erasure
    (regex.findFirstIn(input), reform) match{
      case (None, _) => None
      case (Some(s), None) => Some(s)
      case (Some(s), Some(fun)) => Some(fun(s))
    }
  }
}
我正在写一个GTKmm窗口程序; 主窗口创建两个按钮,一个用于英语,一个用于中文.用户可以单击按钮以适当的语言显示不同的窗口.目前我在主窗口内初始化多项容器时遇到问题.它是MainWindowPane类型的对象,它继承了Gtk :: HBox.
当我尝试制作时,编译器发出以下错误:
$ make 
g++ -g `pkg-config gtkmm-2.4 --cflags` -c MainWindow.cpp  
g++  -g -o QPI_frontend main.o MainWindow.o StartButton.o `pkg-config gtkmm-2.4 --libs`  
MainWindow.o: In function `MainWindow':  
/home/dmurvihill/Documents/QPI_frontend/MainWindow.cpp:9: undefined reference to   `MainWindowPane::MainWindowPane()'  
/home/dmurvihill/Documents/QPI_frontend/MainWindow.cpp:9: undefined reference to  `MainWindowPane::MainWindowPane()'  
collect2: ld returned 1 exit status  
make: *** [QPI_frontend] Error 1  
我正在使用最新版本的gcc和pkg-config来包含适当的库.我也是一个java人.
/*
 * MAIN_WINDOW.H
 * Responsible for creating "slave" RSED windows. Can create English or Chinese
 * versions of the demo, and can destroy them all with one click.
 */  
#ifndef …现在我有以下代码:
SentenceModel sd_model = null;
  try {
   sd_model = new SentenceModel(new FileInputStream(
     "opennlp/models/english/sentdetect/en-sent.bin"));
  } catch (InvalidFormatException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  SentenceDetectorME mSD = new SentenceDetectorME(sd_model);
  String param = "This is a good senttence.I'm very happy. Who can tell me the truth.And go to school.";
  String[] sents = mSD.sentDetect(param);
  for(String sent : sents){
   System.out.println(sent); …我对访问一些无效数据有疑问.操作系统如何导致这样的场景出现分段错误:
假设一块数据长100字节,在4K页面的开头对齐.如果我们访问页面的前100个字节内的有效数据,这将把页面加载到内存中,并将页面表项置于TLB中.如果我们现在尝试访问100和4K之间的一些无效数据,因为条目已经存在于页表中,我们是否可以访问无效数据?
我想知道是否可以创建模板函数,然后创建指向该模板函数的函数指针.这可能吗?
我正在使用VS2008.
以下代码获取此编译时错误:
"无法从'overloaded-function'转换为'int(__ cdecl*)(int&,int&)'在范围内具有此名称的所有函数都不匹配目标类型"
template<typename T>
T tfunc(const T &x, const T &y){
    return (x < y ? x : y);
}
int (*tfunc_ptr)(int &, int &) = &tfunc<int>;