#include<stdio.h>
#define PIECE_PER_KG 110.0 //每KG可生产的巧克力块数 = 1000 * 55 / 500
#define BIGBOX 24
#define SMALLBOX 11
int main(void)
{
int n, big_rem, small_rem, big, small, temp, rem
float m
printf("please input the weight(/kg):")
scanf("%f",&m)
n = (int)(PIECE_PER_KG * 裂芦m)
rem = n
for ( big = 0 big * BIGBOX <= n big++ ) {
for ( small = 0 ( small * SMALLBOX + big * BIGBOX ) <= n small++ ) {
temp = n - small * SMALLBOX - big * BIGBOX
肆手带 if ( rem > temp ) {
rem = temp
big_rem = big
薯者 small_rem = small
}
}
}
//printf ( "巧克力共有%d块,大盒装24块,小盒装11块。\n", n )
printf ( "大盒数量:%d个,小盒数量:%d个,剩余巧克力:%d块。\n", big_rem, small_rem, rem )
return 0
}
按照你的意思,一次只能拿一块完整的巧克力掰开,这样的话,最少次数应该是先沿着长边掰开,如,2×8,先掰开成两个1×8,蔽滑剩下的在每个掰8-1次。所以程序可以在你的基础上修改下:#include<stdio.h>
int main()
{
unsigned long a,b,alls
scanf("%ld%ld",&a,&b)
// 注意,a b 合法性检查,如不能为0,这里不再详细编写
alls = a >b ? b-1 + (a-1) * b : a-1 + a *(b-1)
printf("宏哪腊%ld",alls)
return 0;
}
程序只是表达思想的工具,知道如何算才是最重要的。所缓悉以,不管程序多么大,都是表达思想的,思想重于方法。
#include<iostream>#include <cstdio>
#include <cstdlib>
#include<string>
#include<time.h>
using namespace std
struct chocolate{
int tag
char cho
}
#define max 100
char s='p'
int t=7
chocolate p[max][max]
void coutcho(chocolate p[max][max],int m,int n)
void choosecutcho(int m,int n,int x0,int y0)
void main(){
int m,n,x0,y0,h
int z=2
cout<<" **************************************"<<endl
cout<<" ** 欢迎来到掰巧克力的游戏 **"<<endl
cout<<" **请输入游戏的模式(1为单人,2为双人)**"<<endl
cout<<" **************************************"<<endl
cin>>h
if(h==1)
cout<<"你选择了单人游戏!"<<endl
else if(h==2)
cout<<"你选择了双人游戏!"<<endl
cout<<"请输入巧克力的长度和宽度:"<<endl
cin>>n>>m
srand((unsigned)time( NULL ))
x0=rand()%m+1
y0=rand()%n+1
for(int i=0i<mi++)
for(int j=0j<nj++)
p[i][j].cho='@'
p[x0-1][y0-1].cho='*'
cout<<"巧克力初始化如下:"<<endl
coutcho(p,m,n)
while(m!=1||n!=1){
if(z%2==0&&h==1)
{
choosecutcho(m,n,x0, y0)
cout<<"电脑走步,经型高分析决定沿"<<s<<"="<<t<<"位置掰巧克力!"<<endl
cout<<"电脑走完后的巧克力形状如下:"<<endl
}
else if(z%2==0&罩贺&h==2)
{
cout<<"玩家一走走步!"<<endl
cin>>s>>t
while((s=='x'&&(t<=0||t>=n))||(s=='y'&&(t<=0||t>=m)))
{
cout<<"输入错误!请重新输入:"<<endl
cin>>s>>t
}
cout<<"玩家一掰完后的巧克力如下:"<<endl
}
else if(z%2!=0&&h==1)
{
cout<<"轮到你走步,请输入你要掰的方向(x或y)和要掰的位置: "<<endl
cin>>s>>t
while((s=='x'&&(t<=0||t>=n))||(s=='y'&&(t<=0||t>=m)))
{
cout<<"输入错误!请重新输入:"<<endl
cin>>s>>t
}
cout<<"你掰玩后的巧克力如下:"<<endl
}
else if(z%2!=0&&h==2)
{
cout<<"玩家二走走步!"<<endl
cin>>s>>t
while((s=='x'&&(t<=0||t>=n))||(s=='y'&&(t<=0||t>=m)))
{
cout<<"输入错误!请重新输入:"<<endl
cin>>s>>t
}
cout<<"物租派玩家二掰完后的巧克力如下:"<<endl
}
if(s=='x')
{
if(y0>t)
{
n=n-t
p[x0-1][y0-t-1].cho=p[x0-1][y0-1].cho
p[x0-1][y0-1].cho='@'
y0=y0-t
}
else if(y0<=t)
n=t
}
else if(s=='y')
{
if(x0>t)
{
m=m-t
p[x0-t-1][y0-1].cho=p[x0-1][y0-1].cho
p[x0-1][y0-1].cho='@'
x0=x0-t
}
else
if(x0<=t)
m=t
}
coutcho(p,m,n)
z++
}
if(z%2!=0&&h==1)
cout<<"电脑获胜!"<<endl
else if(z%2==0&&h==1)
cout<<"你获胜了!"<<endl
else if(z%2!=0&&h==2)
cout<<"玩家一获胜了!"<<endl
else if(z%2==0&&h==2)
cout<<"玩家二获胜了!"<<endl
}
void coutcho(chocolate p[max][max],int m,int n){
int i,k
cout<<" x "
for(k=1k<=nk++)
cout<<k%10<<" "
cout<<endl
cout<<"y"<<endl
for(i=0i<mi++){
cout<<(i+1)%10<<" "
for(int j=0j<nj++)
cout<<p[i][j].cho<<" "
cout<<endl
}
}
void choosecutcho(int m,int n,int x0,int y0){
int p1,p2,p3,p4,i,j,k,l,p,q1
p1=y0-1
p2=x0-1
p3=n-y0
p4=m-x0
p=p1^p2^p3^p4
if(p!=0)
{
for(i=0i<p1i++)
{
q1=i^p2^p3^p4
if(q1==0)
{
t=p1-i
s='x'
goto T1
}
}
for(j=0j<p2j++)
{
q1=p1^j^p3^p4
if(q1==0)
{
t=p2-j
s='y'
goto T1
}
}
for(k=0k<p3k++)
{
q1=p1^p2^k^p4
if(q1==0)
{
t=y0+k
s='x'
goto T1
}
}
for(l=0l<p4l++)
{
q1=p1^p2^p3^l
if(q1==0)
{
t=x0+l
s='y'
goto T1
}
}
}
else
{
if(p1!=0)
{
s='x'
t=1
}
else if(p2!=0){
s='y'
t=1
}
else if(p3!=0){
s='x'
t=n-1
}
else if(p4!=0){
s='y'
t=m-1
}
}
T1:
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)