十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
不知道我理解的对不 其实就是数组 元素删除和平移问题 第一次 选出 2 和 5 并且选中的同时将2 和5 的值设置为-1 然后遍历数组 判断如果当前元素值为-1 则将后面的元素前移 然后保存在新数组中 再重复 这就是个递归
为石河子等地区用户提供了全套网页设计制作服务,及石河子网站建设行业解决方案。主营业务为成都做网站、成都网站建设、成都外贸网站建设、石河子网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
先求一个0到300 的随机数 这个简单吧 ,Java里的随机数是取的0到1的数,你放大300倍取整就是0到300的随机数,然后你把这个数大于5 且不超过300 的值拿到 再取小于5但是不小于0的值拿到,然后在这些数里随机去一个数,依次类推。
比如第一次取的是 10 那么 下次随机数就是 5到15 之间,不包括5和15的话,加上10是9个数(6到14),那么取0到1的随机数乘以9加上6 取整就是你第二个随机数 ,依次类推
package know;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class T12 {
public static void main(String[] args) {
System.out.println(cal("9"));
}
public static BigDecimal cal(String xstr) {
BigDecimal x = new BigDecimal(xstr);
BigDecimal result = BigDecimal.ONE;
int end = calend(x);
System.out.println(end);
for (int i = 1; i = end; i++) {
result = result.add(x.pow(i).divide(calmot(i), 5,
RoundingMode.HALF_UP));
}
return result;
}
/**
* 计算n的最大值 计算到小数点后5位
*
* @return
*/
public static int calend(BigDecimal x) {
int m = 1;
while (x.pow(m).divide(calmot(m), 6, RoundingMode.HALF_UP)
.compareTo(new BigDecimal("0.00001")) = 0) {
m++;
}
return m;
}
/**
* 计算分母 m!
*
* @return
*/
public static BigDecimal calmot(int m) {
BigDecimal mot = new BigDecimal(m);
for (int i = m - 1; i 0; i--) {
mot = mot.multiply(new BigDecimal(i));
}
return mot;
}
}
x的n次方/n!,肯定是n越大值越小的,题目要求精度计算到小数点后五位,那么当x的n次方/n!的值小于0.00001时,后面的值没必要计算了,根据这个就能得出n的最大值,其他的逻辑就很好实现了
0.2-1.0步长0.2,意思就是x取值0.2,0.4,0.6,0.8,1.0
#include iostream
using namespace std;
struct Node
{
int date;
Node *next;
};
void josephbicycle(Node* p,int n,int k,int m)
{
Node* head=p;
Node* start=p; //游戏开始位置
int cnt=0;//计数用的
int count=0;
while(1) //将链表头尾相连成约瑟夫环
{
if(p-next==NULL)
{
p-next=head;
break;
}
else
p=p-next;
}
for(Node* tmp=head;cntn;tmp=tmp-next)
{
start=tmp;
cnt++;
}
cnt=0;
if(m==1) //判断离开,删除离开成员的指针
{
for(Node* tmp=start;cntn;tmp=tmp-next)
{
couttmp-next-dateendl;
cnt++;
}
}
else
{
cnt=1;
while(1)
{
cnt++;
if(cnt==m)
{
count++;
coutstart-next-next-dateendl;
start-next-next=start-next-next-next;
cnt=1;
}
if(count==n)
break;
start=start-next;
}
}
}
int main()
{
Node *p,*head;
p=new Node;
head=p;
int n,date;
cout"请输入数组所包含元素个数n:";
cinn;
cout"请输入各个元素,用空格隔开:";
for(int i=1;i=n;i++)
{
cindate;
p-date=date;
if(in)
{
p-next=new Node;
p=p-next;
}
if(i==n)
p-next=NULL;
}
josephbicycle(head,n,1,4);
return 0;
}
满意请采纳!不懂可以问,不满意可以修改!