📄 shizi.cpp
字号:
#include <iostream.h>
#include <iomanip.h>
#define n 5 //石头的堆数
int v[n+1]={0,5,8,6,4,10}; //每堆石头的个数;
int m[n+1][n+1][2]; //m[i][j][0]存取最小得分,m[i][j][1]存取最大得分;
void main()
{
for(int i=0;i<=n;i++)
{ m[0][i][0]=0;
m[0][i][1]=0;
m[1][i][0]=v[i];
m[1][i][1]=v[i];
}
for( i=2; i<=n; i++)
for(int j=1; j<=n; j++)
{
int temp = 0;
int r=j;
for(int k=1;k<=i;k++)
{
r=(r-1)%n+1;
temp+=v[r];
r++;
}
m[i][j][0] = m[i-1][j][0]+temp;
m[i][j][1] = m[i-1][j][1]+temp;
int t1=m[i-1][j+1][0]+temp;
int t2=m[i-1][j+1][1]+temp;
if(t1<m[i][j][0]) m[i][j][0]=t1;
if(t2>m[i][j][1]) m[i][j][1]=t2;
}
/*for(int a=1;a<=n;a++)
cout<<setw(3)<<v[a];
cout<<endl;*/
for( i=1;i<=n;i++)
{ for(int j=1;j<=n;j++)
cout<<setw(3)<<m[i][j][1];
cout<<endl;
}
for(i=1;i<=n;i++)
{ for(int j=1;j<=n;j++)
cout<<setw(3)<<m[i][j][0];
cout<<endl;
}
// int tempmin = m[1][n][0];
// int tempmax = m[1][n][1];
/* for(int i=2; i<=n; i++)
if(tempmin > m[i][i+n-1][0]) tempmin = m[i][i+n-1][0];
for(int j=2; j<=n; j++)
if(tempmax < m[j][j+n-1][1]) tempmax = m[j][j+n-1][1];
cout << tempmin << endl;
cout << tempmax<<endl; */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -