欧美性猛交黑人xxxx,成人毛片一区二区三区,久久综合九色综合精品,男的把j放进女人下面视频免费

面試題目:貓吃老鼠問題的求解

  • 發(fā)布于:2023-11-23
  • 188 人圍觀

  前幾天去上海某外企參加筆試,由于考試較緊,其中有些大題根本沒辦法完成,很是郁悶。現(xiàn)在偶們打算在這篇文章中探討其中一道筆試題---貓吃老鼠問題的求解。寫這篇文章只是想和大家交流學(xué)習(xí),難免會(huì)有錯(cuò)誤和不足,希望得到大家的批評(píng),在此偶們不勝感激!

  一、問題描述

  現(xiàn)有n個(gè)老鼠圍成一圓圈,有一只貓從任意位置開始吃老鼠,每次都隔一個(gè)老鼠吃,請(qǐng)給出最后一個(gè)老鼠的編號(hào)?題目要求是任給老鼠數(shù)n,輸出貓最后吃的老鼠的編號(hào)。

  二、問題求解

  我們假設(shè)老鼠按順時(shí)針方向編號(hào),貓從第一號(hào)老鼠開始吃。比如現(xiàn)有4個(gè)老鼠圍成一個(gè)圓,則貓吃老鼠的順序應(yīng)該為1->3->2->4,即最后一個(gè)吃的老鼠的編號(hào)是4。

  程序設(shè)計(jì)思路說明:

  貓從老鼠數(shù)組從頭開始移動(dòng),如果碰到老鼠且間隔標(biāo)志為1,則吃該老鼠,然后間隔標(biāo)志置為0,剩下的老鼠數(shù)減1,繼續(xù)向后移動(dòng);如果碰到老鼠但間隔標(biāo)志為0,則不吃該老鼠,間隔標(biāo)志置為1,然后向后移動(dòng);如果沒有碰到老鼠則繼續(xù)向后移動(dòng);如果移動(dòng)到數(shù)組末則再從頭開始以實(shí)現(xiàn)圓循環(huán)。

  老鼠數(shù)組ipArray用來表明特定位置是否有老鼠存在,1表示有老鼠存在,0表示此處的老鼠已被吃掉。

  間隔標(biāo)志ijian為1,表示接下來如果碰到老鼠就可以吃掉;如果為0,則表示剛吃過老鼠應(yīng)該隔一個(gè)再吃,這時(shí)碰到下一個(gè)老鼠就置間隔標(biāo)志為1,但并不吃老鼠。

  剩下的老鼠數(shù)iyu在每吃掉一個(gè)老鼠后進(jìn)行減一操作;當(dāng)剩余老鼠數(shù)為1時(shí),則直接找出該老鼠位置,并輸出其編號(hào),也就是數(shù)組下標(biāo)值加1,到此程序結(jié)束。具體實(shí)現(xiàn)可以參看源代碼

  三、代碼說明

#include "stdafx.h"
#include <iostream.h>
int main(int argc, char* argv[])
{
  cout<<"請(qǐng)輸入老鼠數(shù):";
  int itotal;    //老鼠總數(shù)
  cin>>itotal;
  int iyu=itotal;  //剩下未吃的老鼠數(shù)
  int ipoint=0; //移動(dòng)指針  //指示貓的當(dāng)前位置
  int ijian=1;  //間隔標(biāo)志 //1表示已經(jīng)間隔了一個(gè)老鼠,0表示未間隔
  int * ipArray; //數(shù)組指針
  
  if(iyu<1)
  {
    cout<<"老鼠數(shù)不能小于1!"<<endl;
    return 0;
  }
  if(iyu==1)  //如果只有一只老鼠,則直接輸出返回
  {
    cout<<" "<<ipoint+1<<endl;
    cout<<"結(jié)束!"<<endl;
    return 0;
  }
  
  cout<<"共"<<itotal<<"個(gè)老鼠!"<<endl;
    cout<<"以下是吃老鼠的順序輸出:"<<endl;
  ipArray=new int[iyu]; //生成數(shù)組
  for(int i=0;i<iyu;i++)  //初始全部位置都有老鼠存在
  {
    ipArray[i]=1;      //1表示該位置存在老鼠
  }
  
  
  for(;;) //循環(huán)開始,依次隔一個(gè)吃老鼠,直到只剩下最后一只老鼠,輸出并程序結(jié)束
  {
        ipoint=ipoint%itotal; //確保在數(shù)組范圍內(nèi)
    if(iyu==1)  //只剩最后一只的老鼠,直接找出即可
    {
      if((ipArray[ipoint]==1))  //碰到老鼠
      {
        cout<<" "<<(ipoint+1)<<endl;
        cout<<"結(jié)束!"<<endl;
        return 0;  
      }
    }
    else
    {
      if((ipArray[ipoint]==1))  //碰到老鼠
      {
        if(ijian==1) //如果已跳過一個(gè)老鼠,則現(xiàn)在就可以吃
        {
          cout<<" "<<(ipoint+1)<<endl;  //輸出吃掉的老鼠號(hào)
          ipArray[ipoint]=0; //條件滿足則吃老鼠,置該位為0;
          ijian=0;       //置間隔標(biāo)志為0;
          iyu--;       //剩下要吃的老鼠數(shù)減一
        }
        else   //如果剛吃過一個(gè)老鼠
        {
          ijian=1;  //設(shè)置間隔標(biāo)志為1
        }
      }
    }
    ipoint++;  //移動(dòng)貓的位置
  }//endfor
  return 0;
}四、結(jié)束語

萬企互聯(lián)
標(biāo)簽: