暴力求解法
知识点:
要求设计者找出所有可能的方法,然后选择其中的一种方法,若该方法不可行则试探下一种可能的方法。
使用暴力法的几种情况
1.搜索所有的解空间
2.搜索所有的路径
3.直接计算
4.模拟和仿真
实例
代码如下:
long long存储。
代码如下:
#include
int main(){
int i,j,n;
int s[18];
while(scanf("%d",&n)==1&&n){
for(int i=0;i
scanf("%d",&s[i]);
int result[172],count=0;//用来存各连续子序列的值
for(int i=0;i
result[count++]=s[i];
for(int j=i+1;j
count ++;
result[count]=result[count-1]*s[i];}
count++;}
int mid=result[0];//找子序列中最大的与结果集比较;
for(i=1;i
mid=(mid>result[i]?mid:result[i];
if(mid>0)
printf("-1\n");
}
return 0;
}
#include
#include
#include
int main(){
char s[20];
int i;
while(scanf("%d",&s[i])){
int length=strlen(s);
int ans=0;
for( i=length-1;i>=0;i-=2){
ans+=s[i]-'0';
}
for( i=length-2;i>=0;i-=2){
int num=(s[i]-'0')*2;
if(num>=10)
num-=9;
ans+=num;
}
if(ans%10==0){
printf("成功");
}
else printf("失败");
}
return 0;
}
代码如下:
#include
#include
struct luoma {
char name;
int num;
}
struct luoma a[7]{{'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};
void change(char b[k],int num){
int i,j,sum;
struct luoma c[10];
for(int i=0;i
for(j=0;j<7;j++){
if(b[i]==a[i].name){
c[i].name=b[i];//存放当前单个罗马数字及其值
c[i].n=a[j].n;
}
}
}
sum=c[i-1].n;
for(i=num-1;i>0;i--){
if(c[i].n<=c[i-1].n){
sum=sum+c[i-1].n;}
else
sum=sum-c[i-1].n;
}
printf("%d",sum);
}
int main(){
int N,k;
scanf("%d",&N);
char b[10][10];//只能存放十组罗马数字 一组罗马数字只能有10个字符;
int num[10],i,j,sum;
for(k=0;k
scanf("%s",b[k]);//输入几组罗马数字
num[k]=strlen(b[k]);}//一组罗马数字的长度
for(k=0;k
change(b[k],num[k]);
}
return 0;
}